Page Summary
-
This guide demonstrates how to retrieve Google Workspace Marketplace app installation and licensing information using the Google Workspace Marketplace API.
-
It provides example requests and responses for scenarios like individual user installations, admin installations for entire organizations or specific OUs, and application deletions.
-
You can use the
licenseNotification.list,userLicense.get, andcustomerLicense.getmethods to obtain detailed licensing and installation data. -
By examining the response fields like
enabled,state,seatCount, andprovisions, you can determine the licensing status and access permissions of users and domains.
By providing example requests to and responses from the Google Workspace Marketplace API, this document shows how to get Google Workspace Marketplace app installation and licensing details.
The application is installed by an administrator
The administrator of cymbalgroup.com installed the application for everyone in the organization.
userLicense.get request
This request calls the userLicense.get method to get the licensing status
of user1@cymbalgroup.com to determine if they have permission to use the
application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/APPLICATION_ID/user1@cymbalgroup.comResponse body
Since cymbalgroup.com has installed the application, the response returns the
userLicense resource for user1@cymbalgroup.com. The userLicense
resource has the
enabled
field set to true, indicating that the domain administrator for
cymbalgroup.com has activated the application for this domain, and the
state
field set to ACTIVE, indicating that user1@cymbalgroup.com has a valid license
and should be permitted to use the application.
{
"kind": "appsmarket#userLicense",
"enabled": true,
"state": "ACTIVE",
"editionId": "default_edition",
"customerId": "user1@cymbalgroup.com",
"applicationId": "APPLICATION_ID",
"id": "USER_LICENSE_ID",
"userId": "user1@cymbalgroup.com"
}
customerLicense.get request
This request calls the customerLicense.get method to get the licensing
status of cymbalgroup.com to determine if they have access to the application.
GET /appsmarket/v2/customerLicense/{applicationId}/{customerId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/customerLicense/APPLICATION_ID/cymbalgroup.comResponse body
The response returns the customerLicense resource for cymbalgroup.com
where the
state
field is set to ACTIVE, indicating that the customer has a valid license.
{
"kind": "appsmarket#customerLicense",
"id": "CUSTOMER_LICENSE_ID",
"applicationId": "APPLICATION_ID",
"customerId": "cymbalgroup.com",
"state": "ACTIVE",
"editions": [
{
"editionId": "default_edition",
"seatCount": -1
}
]
}
The application is only administrator installed for a specific user's organizational unit
The application is now only administrator installed for user2@cymbalgroup.com's organizational unit (OU). It's no longer administrator installed for everyone in the organization.
userLicense.get request
This request calls the userLicense.get method to get the licensing status
of user3@cymbalgroup.com to determine if they have permission to use the
application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/APPLICATION_ID/user3@cymbalgroup.comResponse body
Since the application is only administrator installed for user2@cymbalgroup.com,
the response returns a userLicense resource for user3@cymbalgroup.com
that has the enabled field set to false, indicating that the domain
administrator for cymbalgroup.com has not activated the application for this
domain, and the state field set to ACTIVE, indicating that the user has a
valid license and should be permitted to use the application.
{
"kind": "appsmarket#userLicense",
"enabled": false,
"state": "ACTIVE",
"editionId": "default_edition",
"customerId": "cymbalgroup.com",
"applicationId": "APPLICATION_ID",
"id": "USER_LICENSE_ID",
"userId": "user3@cymbalgroup.com"
}
userLicense.get request
This request calls the userLicense.get method to get the licensing status
of user2@cymbalgroup.com to determine if they have permission to use the
application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/APPLICATION_ID/user2@cymbalgroup.comResponse body
Since the application is only administrator installed for user2@cymbalgroup.com,
the response returns a userLicense resource for user2@cymbalgroup.com
that has the enabled field set to true and the state field set to
ACTIVE.
{
"kind": "appsmarket#userLicense",
"enabled": true,
"state": "ACTIVE",
"editionId": "default_edition",
"customerId": "cymbalgroup.com",
"applicationId": "APPLICATION_ID",
"id": "USER_LICENSE_ID",
"userId": "user2@cymbalgroup.com"
}
The application is deleted for everyone in the organization
Even though the application was deleted for everyone in the organization, user1@cymbalgroup.com still has access because they previously installed it individually.
userLicense.get request
This request calls the userLicense.get method to get the licensing status
of user2@cymbalgroup.com to determine if they have permission to use the
application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/APPLICATION_ID/user2@cymbalgroup.comResponse body
Since the application was deleted for everyone in the organization, the response
returns a userLicense resource for user2@cymbalgroup.com that has the
enabled field set to false and the state field set to UNLICENSED,
indicating that the administrator of this user's domain didn't assign a seat for
the application to this user.
{
"kind": "appsmarket#userLicense",
"enabled": false,
"state": "UNLICENSED",
"applicationId": "APPLICATION_ID",
"id": "USER_LICENSE_ID",
"userId": "user2@cymbalgroup.com"
}
userLicense.get request
This request calls the userLicense.get method to get the licensing status
of user1@cymbalgroup.com to determine if they have permission to use the
application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/APPLICATION_ID/user1@cymbalgroup.comResponse body
Since user1@cymbalgroup.com previously installed the application individually,
they still have permission to use it. The response returns a userLicense
resource that has the enabled field set to true and the state field set to
ACTIVE.
{
"kind": "appsmarket#userLicense",
"enabled": true,
"state": "ACTIVE",
"editionId": "default_edition",
"customerId": "user1@cymbalgroup.com",
"applicationId": "APPLICATION_ID",
"id": "USER_LICENSE_ID",
"userId": "user1@cymbalgroup.com"
}