Get app installation and licensing details

By providing example requests to and responses from the Google Workspace Marketplace API, this guide shows how to get Google Workspace Marketplace app installation and licensing details.

The application has not been installed yet

licenseNotification.list request

This request calls the licenseNotification.list method to retrieve a list of licensing notifications for a specific application.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Response body

Since the application has not been installed yet, the response to this request does not include any licensing notifications.

{
  "kind": "appsmarket#licenseNotificationList",
  "nextPageToken": ""
}

The application is individually installed

A user, [email protected], individually installed the application from Google Workspace Marketplace.

licenseNotification.list request

This request calls the licenseNotification.list method and retrieves the list of licensing notifications for the application that has been installed by the user.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Response body

Since [email protected] installed the application, the response includes one license notification. The license notification includes a provision notification since a new license was provisioned for [email protected] when they installed the application.

{
  "kind": "appsmarket#licenseNotificationList",
  "notifications": [
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "[email protected]",
      "timestamp": "1641318266998",
      "provisions": [
        {
          "kind": "appsmarket#provisionNotification",
          "editionId": "default_edition",
          "seatCount": "1"
        }
      ]
    }
  ],
  "nextPageToken": "{NEXT_PAGE_TOKEN}"
}

The application is admin installed

The administrator of domain1.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 [email protected] and 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/{applicationId}/[email protected]

Response body

Since domain1.com has admin installed the application, the response returns the user license for [email protected] where enabled is true, indicating that the domain administrator for domain1.com has activated the application for this domain, and state is ACTIVE, indicating that [email protected] has a valid license and should be permitted to use the application.

{
  "kind": "appsmarket#userLicense",
  "enabled": true,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "[email protected]",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

customerLicense.get request

This request calls the customerLicense.get method to get the licensing status of domain1.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/{applicationId}/domain1.com

Response body

The response returns the customer license for domain1.com where state is ACTIVE, indicating that the customer has a valid license.

{
  "kind": "appsmarket#customerLicense",
  "id": "{CUSTOMER_LICENSE_ID}",
  "applicationId": "{APPLICATION_ID}",
  "customerId": "domain1.com",
  "state": "ACTIVE",
  "editions": [
    {
      "editionId": "default_edition",
      "seatCount": -1
    }
  ]
}

The application is only admin installed for a specific user's organizational unit (OU)

The application is now only admin installed for [email protected]'s OU. It is no longer admin installed for everyone in the organization.

userLicense.get request

This request calls the userLicense.get method to get the licensing status of [email protected] and 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/{applicationId}/[email protected]

Response body

Since the application is only admin installed for [email protected], the response returns a user license for [email protected] where enabled is false, indicating that the domain administrator for domain1.com has not activated the application for this domain, and state is 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": "domain1.com",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

userLicense.get request

This request calls the userLicense.get method to get the licensing status of [email protected] and 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/{applicationId}/[email protected]

Response body

Since the application is only admin installed for [email protected], the response returns a user license for [email protected] where enabled is true and state is ACTIVE.

{
  "kind": "appsmarket#userLicense",
  "enabled": true,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "domain1.com",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

The application is deleted for everyone in the organization

The application was deleted for everyone in the organization. The user, [email protected], still has access to the application because they previously individually installed the application.

userLicense.get request

This request calls the userLicense.get method to get the licensing status of [email protected] and 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/{applicationId}/[email protected]

Response body

Since the application was deleted for everyone in the organization, the response returns a user license for [email protected] where enabled is false and state is UNLICENSED, indicating that the administrator of this user's domain did not assign a seat for the application to this user.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "UNLICENSED",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

userLicense.get request

This request calls the userLicense.get method to get the licensing status of [email protected] and 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/{applicationId}/[email protected]

Response body

Since [email protected] previously individually installed the application, they still have permission to use it. The response returns a user license where enabled is true and state is ACTIVE.

{
  "kind": "appsmarket#userLicense",
  "enabled": true,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "[email protected]",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

The license notifications from all above actions

licenseNotification.list request

A request to the licenseNotification.list method retrieves all of the licensing notifications for the application.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Response body

The response returns a list of license notifications for all of the actions performed above.

{
  "kind": "appsmarket#licenseNotificationList",
  "notifications": [
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "[email protected]",
      "timestamp": "1641318266998",
      "provisions": [
        {
          "kind": "appsmarket#provisionNotification",
          "editionId": "default_edition",
          "seatCount": "1"
        }
      ]
    },
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "domain1.com",
      "timestamp": "1641318351038",
      "provisions": [
        {
          "kind": "appsmarket#provisionNotification",
          "editionId": "default_edition",
          "seatCount": "-1"
        }
      ]
    },
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "domain1.com",
      "timestamp": "1641318858349",
      "deletes": [
        {
          "kind": "appsmarket#deleteNotification",
          "editionId": "default_edition",
        }
      ]
    },
  ],
  "nextPageToken": "{NEXT_PAGE_TOKEN}"
}