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

В этом руководстве на примере запросов и ответов 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 активировал приложение для этого домена, а stateACTIVE , что указывает на то, что 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 не активировал приложение для этого домена, а stateACTIVE , что указывает на то, что у пользователя есть действующая лицензия и ему должно быть разрешено использовать приложение.

{
  "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 , а stateACTIVE .

{
  "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 , а stateUNLICENSED , что указывает на то, что администратор домена этого пользователя не назначил этому пользователю место для приложения.

{
  "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 ранее индивидуально установил приложение, у него всё ещё есть разрешение на его использование. Ответ возвращает пользовательскую лицензию , где enabledtrue , а stateACTIVE .

{
  "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}"
}