Получите информацию об установке и лицензировании приложения

В этом руководстве представлены примеры запросов и ответов от API Google Workspace Marketplace . В этом руководстве показано, как получить сведения об установке и лицензировании приложения Google Workspace Marketplace.

Приложение еще не установлено

запрос LicenseNotification.list

Этот запрос вызывает метод licenseNotification.list для получения списка уведомлений о лицензировании для конкретного приложения.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Тело ответа

Поскольку приложение еще не установлено, ответ на этот запрос не содержит уведомлений о лицензировании.

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

Приложение устанавливается индивидуально

Пользователь user1@domain1.com самостоятельно установил приложение из Google Workspace Marketplace.

запрос LicenseNotification.list

Этот запрос вызывает метод licenseNotification.list и получает список уведомлений о лицензировании для приложения, установленного пользователем.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Тело ответа

Поскольку пользователь1@domain1.com установил приложение, ответ включает одно уведомление о лицензии . Уведомление о лицензии включает уведомление о предоставлении, поскольку новая лицензия была предоставлена ​​пользователю user1@domain1.com при установке приложения.

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

Приложение установлено администратором

Администратор домена1.com установил приложение для всех в организации.

запрос userLicense.get

Этот запрос вызывает метод userLicense.get , чтобы получить статус лицензирования пользователя user1@domain1.com и определить, есть ли у него разрешение на использование приложения.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com

Тело ответа

Поскольку администратор домена1.com установил приложение, ответ возвращает пользовательскую лицензию для user1@domain1.com, где enabled равно true , что указывает на то, что администратор домена для доменаdomain1.com активировал приложение для этого домена, а state ACTIVE , что указывает на что user1@domain1.com имеет действующую лицензию и ему должно быть разрешено использовать приложение.

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

Запрос customerLicense.get

Этот запрос вызывает метод customerLicense.get , чтобы получить статус лицензирования домена 1.com и определить, есть ли у него доступ к приложению.

GET /appsmarket/v2/customerLicense/{applicationId}/{customerId}

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

Тело ответа

В ответ возвращается лицензия клиента для домена1.com, state которой — ACTIVE , что указывает на то, что у клиента есть действующая лицензия.

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

Приложение устанавливается администратором только для организационного подразделения (OU) конкретного пользователя.

Приложение теперь установлено только администратором для подразделения user2@domain1.com. Он больше не устанавливается администратором для всех в организации.

запрос userLicense.get

Этот запрос вызывает метод userLicense.get , чтобы получить статус лицензирования пользователя user3@domain1.com и определить, есть ли у него разрешение на использование приложения.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user3@domain1.com

Тело ответа

Поскольку приложение установлено только администратором для user2@domain1.com, ответ возвращает пользовательскую лицензию для user3@domain1.com, где enabled равно false , что указывает на то, что администратор домена для domain1.com не активировал приложение для этого домена, и state ACTIVE , что указывает на то, что у пользователя есть действующая лицензия и ему должно быть разрешено использовать приложение.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "domain1.com",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "user3@domain1.com"
}

запрос userLicense.get

Этот запрос вызывает метод userLicense.get , чтобы получить статус лицензирования пользователя user2@domain1.com и определить, есть ли у него разрешение на использование приложения.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com

Тело ответа

Поскольку приложение установлено только администратором для user2@domain1.com, ответ возвращает пользовательскую лицензию для user2@domain1.com, где enabled равно true , а state ACTIVE .

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

Приложение удаляется для всех в организации.

Приложение было удалено для всех в организации. Пользователь user1@domain1.com по-прежнему имеет доступ к приложению, поскольку ранее он индивидуально установил это приложение.

запрос userLicense.get

Этот запрос вызывает метод userLicense.get , чтобы получить статус лицензирования пользователя user2@domain1.com и определить, есть ли у него разрешение на использование приложения.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com

Тело ответа

Поскольку приложение было удалено для всех в организации, ответ возвращает пользовательскую лицензию для user2@domain1.com, где enabled имеет значение false , а state UNLICENSED , что указывает на то, что администратор домена этого пользователя не назначил этому приложению место. пользователь.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "UNLICENSED",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "user2@domain1.com"
}

запрос userLicense.get

Этот запрос вызывает метод userLicense.get , чтобы получить статус лицензирования пользователя user1@domain1.com и определить, есть ли у него разрешение на использование приложения.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com

Тело ответа

Поскольку пользователь1@domain1.com ранее индивидуально устанавливал приложение, у него все еще есть разрешение на его использование. Ответ возвращает пользовательскую лицензию , где enabled равно true , а state ACTIVE .

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

Уведомления о лицензии от всех вышеперечисленных действий

запрос LicenseNotification.list

Запрос к методу licenseNotification.list извлекает все уведомления о лицензировании для приложения.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Тело ответа

В ответ возвращается список уведомлений о лицензиях для всех действий, выполненных выше.

{
  "kind": "appsmarket#licenseNotificationList",
  "notifications": [
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "user1@domain1.com",
      "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}"
}