Obtenir des informations sur l'installation d'une application et les licences

En fournissant des exemples de requêtes et de réponses à l'API Google Workspace Marketplace, ce guide explique comment obtenir des informations sur l'installation et les licences des applications 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 une liste de 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

Étant donné que 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, [email protected], a installé individuellement l'application 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é qu'[email protected] 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 [email protected] lors de l'installation de l'application.

{
  "kind": "appsmarket#licenseNotificationList",
  "notifications": [
    {
      "kind": "appsmarket#licenseNotification",
      "id": "{LICENSE_NOTIFICATION_ID}",
      "applicationId": "{APPLICATION_ID}",
      "customerId": "[email protected]",
      "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.

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état de licence de l'[email protected] 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}/[email protected]

Corps de la réponse

Étant donné que l'administrateur a installé l'application sur domain1.com, la réponse renvoie la licence utilisateur pour [email protected], où enabled est true, ce qui indique que l'administrateur du domaine pour domain1.com a activé l'application pour ce domaine, et state est ACTIVE, ce qui indique que [email protected] dispose d'une licence valide et doit être autorisé à utiliser l'application.

{
  "kind": "appsmarket#userLicense",
  "enabled": true,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "[email protected]",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

Requête customerLicense.get

Cette requête appelle la méthode customerLicense.get pour obtenir l'état de 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 n'est installée que par l'administrateur pour l'unité organisationnelle (UO) d'un utilisateur spécifique.

L'application n'est désormais installée que par l'administrateur pour l'UO de [email protected]. Il n'est plus installé par l'administrateur pour tous les membres de l'organisation.

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état de licence de l'[email protected] 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}/[email protected]

Corps de la réponse

Étant donné que l'application n'est installée que par l'administrateur pour [email protected], la réponse renvoie une licence utilisateur pour [email protected], où enabled est false, ce qui indique que l'administrateur du domaine pour domain1.com n'a pas activé l'application pour ce domaine, et que 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": "[email protected]"
}

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état de licence de l'[email protected] 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}/[email protected]

Corps de la réponse

Étant donné que l'application n'est installée que par l'administrateur pour [email protected], la réponse renvoie une licence utilisateur pour [email protected], où enabled est true et state est ACTIVE.

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

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, [email protected], a toujours accès à l'application, car il l'a installée individuellement.

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état de licence de l'[email protected] 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}/[email protected]

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 [email protected], où enabled est false et state est UNLICENSED, ce qui indique que l'administrateur du domaine de cet utilisateur ne lui a pas attribué de licence pour l'application.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "UNLICENSED",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état de licence de l'[email protected] 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}/[email protected]

Corps de la réponse

Étant donné qu'[email protected] a déjà installé l'application individuellement, il est toujours autorisé à l'utiliser. La réponse renvoie une licence utilisateurenabled est true et state est ACTIVE.

{
  "kind": "appsmarket#userLicense",
  "enabled": true,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "[email protected]",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "[email protected]"
}

Les notifications de licence de toutes les actions ci-dessus

Requête licenseNotification.list

Une requête à la méthode licenseNotification.list récupère toutes les notifications 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": "[email protected]",
      "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}"
}