Ce guide fournit des exemples de requêtes et de réponses à l'API Google Workspace Marketplace pour obtenir des informations sur l'installation et l'attribution des licences de l'application Google Workspace Marketplace.
L'application n'a pas encore été installée
Requête LicenseNotification.list
Cette requête appelle la méthode licenseNotification.list
pour récupérer la liste des notifications de licence pour une application spécifique.
GET /appsmarket/v2/licenseNotification/{applicationId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}
Corps de la réponse
Comme l'application n'a pas encore été installée, la réponse à cette requête n'inclut aucune notification de licence.
{
"kind": "appsmarket#licenseNotificationList",
"nextPageToken": ""
}
L'application est installée individuellement
Un utilisateur (utilisateur1@domaine1.com) a installé l'application de manière individuelle depuis Google Workspace Marketplace.
Requête LicenseNotification.list
Cette requête appelle la méthode licenseNotification.list
et récupère la liste des notifications de licence pour l'application installée par l'utilisateur.
GET /appsmarket/v2/licenseNotification/{applicationId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}
Corps de la réponse
Étant donné que user1@domain1.com a installé l'application, la réponse inclut une notification de licence. La notification de licence inclut une notification de provisionnement, car une nouvelle licence a été provisionnée pour utilisateur1@domain1.com lors de l'installation de l'application.
{
"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}"
}
L'application est installée par l'administrateur.
L'administrateur de domain1.com a installé l'application pour tous les membres de l'organisation.
Demande userLicense.get
Cette requête appelle la méthode userLicense.get
pour obtenir l'état des licences de utilisateur1@domain1.com et déterminer s'il est autorisé à utiliser l'application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com
Corps de la réponse
Étant donné que l'administrateur de domain1.com a installé l'application, la réponse renvoie la licence utilisateur pour utilisateur1@domain1.com, où enabled
est true
, indiquant que l'administrateur de domaine pour domain1.com a activé l'application pour ce domaine, et state
est ACTIVE
, ce qui indique que utilisateur1@domain1.com dispose d'une licence valide et doit être autorisé à utiliser l'application.
{
"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"
}
Demande customerLicense.get
Cette requête appelle la méthode customerLicense.get
pour obtenir l'état de la licence de domain1.com afin de déterminer s'il a accès à l'application.
GET /appsmarket/v2/customerLicense/{applicationId}/{customerId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/customerLicense/{applicationId}/domain1.com
Corps de la réponse
La réponse renvoie la licence client pour domain1.com, où state
est ACTIVE
, ce qui indique que le client dispose d'une licence valide.
{
"kind": "appsmarket#customerLicense",
"id": "{CUSTOMER_LICENSE_ID}",
"applicationId": "{APPLICATION_ID}",
"customerId": "domain1.com",
"state": "ACTIVE",
"editions": [
{
"editionId": "default_edition",
"seatCount": -1
}
]
}
L'application est installée uniquement par les administrateurs pour l'unité organisationnelle (UO) d'un utilisateur spécifique.
L'application est désormais réservée aux administrateurs pour l'UO utilisateur2@domaine1.com. L'administrateur n'est plus installé pour tous les membres de l'organisation.
Demande userLicense.get
Cette requête appelle la méthode userLicense.get
pour obtenir l'état des licences de user3@domain1.com et déterminer s'il est autorisé à utiliser l'application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user3@domain1.com
Corps de la réponse
Étant donné que l'application n'est installée que par l'administrateur pour utilisateur2@domain1.com, la réponse renvoie une licence utilisateur pour utilisateur3@domain1.com, où enabled
est false
, indiquant que l'administrateur de domaine pour domain1.com n'a pas activé l'application pour ce domaine, et state
est ACTIVE
, ce qui indique que l'utilisateur dispose d'une licence valide et doit être autorisé à utiliser l'application.
{
"kind": "appsmarket#userLicense",
"enabled": false,
"state": "ACTIVE",
"editionId": "default_edition",
"customerId": "domain1.com",
"applicationId": "{APPLICATION_ID}",
"id": "{USER_LICENSE_ID}",
"userId": "user3@domain1.com"
}
Demande userLicense.get
Cette requête appelle la méthode userLicense.get
pour obtenir l'état des licences de utilisateur2@domain1.com et déterminer s'il est autorisé à utiliser l'application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com
Corps de la réponse
Étant donné que l'application n'est installée que par un administrateur pour utilisateur2@domaine1.com, la réponse renvoie une licence utilisateur pour utilisateur2@domaine1.com, où enabled
correspond à true
et 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"
}
L'application est supprimée pour tous les membres de l'organisation
L'application a été supprimée pour tous les membres de l'organisation. L'utilisateur, utilisateur1@domaine1.com, a toujours accès à l'application, car il l'a déjà installée individuellement.
Demande userLicense.get
Cette requête appelle la méthode userLicense.get
pour obtenir l'état des licences de utilisateur2@domain1.com et déterminer s'il est autorisé à utiliser l'application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com
Corps de la réponse
Étant donné que l'application a été supprimée pour tous les membres de l'organisation, la réponse renvoie une licence utilisateur pour utilisateur2@domain1.com, où enabled
est false
et state
est UNLICENSED
, ce qui indique que l'administrateur du domaine de cet utilisateur n'a pas attribué de siège à l'application à cet utilisateur.
{
"kind": "appsmarket#userLicense",
"enabled": false,
"state": "UNLICENSED",
"applicationId": "{APPLICATION_ID}",
"id": "{USER_LICENSE_ID}",
"userId": "user2@domain1.com"
}
Demande userLicense.get
Cette requête appelle la méthode userLicense.get
pour obtenir l'état des licences de utilisateur1@domain1.com et déterminer s'il est autorisé à utiliser l'application.
GET /appsmarket/v2/userLicense/{applicationId}/{userId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com
Corps de la réponse
Comme utilisateur1@domain1.com a déjà installé l'application individuellement, il peut toujours l'utiliser. La réponse renvoie une licence utilisateur, où enabled
est true
et state
est 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"
}
Les notifications de licence pour toutes les actions ci-dessus
Requête LicenseNotification.list
Une requête envoyée à la méthode licenseNotification.list
récupère toutes les notifications d'attribution de licence pour l'application.
GET /appsmarket/v2/licenseNotification/{applicationId}
curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}
Corps de la réponse
La réponse renvoie une liste de notifications de licence pour toutes les actions effectuées ci-dessus.
{
"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}"
}