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

Ce guide fournit des exemples de requêtes et de réponses envoyées à l'API Google Workspace Marketplace et vous explique comment 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 séparément

Un utilisateur (utilisateur1@domaine1.com) a installé individuellement l'application à partir de 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

Comme utilisateur1@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 user1@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 un administrateur

L'administrateur de domaine1.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 des licences de user1@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 a installé l'application sur domain1.com, la réponse renvoie la licence utilisateur pour user1@domain1.com, où enabled indique 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 user1@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"
}

Requête customerLicense.get

Cette requête appelle la méthode customerLicense.get pour obtenir l'état d'attribution 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, indiquant 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 un administrateur pour l'unité organisationnelle (UO) d'un utilisateur spécifique

L'application est désormais réservée aux administrateurs pour l'UO de user2@domain1.com. L'administrateur n'est plus installé pour tous les membres de l'organisation.

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état des licences de utilisateur3@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 qu'avec l'administrateur pour utilisateur2@domaine1.com, la réponse renvoie une licence utilisateur pour utilisateur3@domaine1.com, où enabled correspond à false. Cela signifie que l'administrateur de domaine domaine1.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": "user3@domain1.com"
}

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état des licences de user2@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 pour les administrateurs sur 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.

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état des licences de user2@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 user2@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"
}

Requête userLicense.get

Cette requête appelle la méthode userLicense.get pour obtenir l'état des licences de user1@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 utilisateur1@domain1.com a déjà installé l'application individuellement, il peut toujours 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": "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 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}"
}