В этом руководстве на примере запросов и ответов 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}Тело ответа
Поскольку пользователь user1@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}"
}
Приложение установлено администратором.
Администратор 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Тело ответа
 Так как приложение установлено администратором на домене domain1.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 для получения статуса лицензирования domain1.com, чтобы определить, есть ли у него доступ к приложению.
 GET /appsmarket/v2/customerLicense/{applicationId}/{customerId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/customerLicense/{applicationId}/domain1.comТело ответа
 Ответ возвращает лицензию клиента для domain1.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Тело ответа
 Поскольку пользователь user1@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}"
}