В этом руководстве на примере запросов и ответов 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}"
}