Ricevi dettagli sull'installazione e sulle licenze dell'app

Fornendo richieste ed esempi di risposte dall'API Google Workspace Marketplace, questa guida mostra come ottenere i dettagli di installazione e licenza delle app di Google Workspace Marketplace.

L'applicazione non è ancora stata installata

Richiesta licenseNotification.list

Questa richiesta chiama il metodo licenseNotification.list per recuperare un elenco di notifiche relative alle licenze per un'applicazione specifica.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Corpo della risposta

Poiché l'applicazione non è ancora stata installata, la risposta a questa richiesta non include alcuna notifica relativa alle licenze.

{
  "kind": "appsmarket#licenseNotificationList",
  "nextPageToken": ""
}

L'applicazione viene installata singolarmente

Un utente, user1@domain1.com, ha installato individualmente l'applicazione da Google Workspace Marketplace.

Richiesta licenseNotification.list

Questa richiesta chiama il metodo licenseNotification.list e recupera l'elenco delle notifiche relative alle licenze per l'applicazione installata dall'utente.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Corpo della risposta

Poiché user1@domain1.com ha installato l'applicazione, la risposta include una notifica di licenza. La notifica della licenza include una notifica di provisioning poiché è stata eseguita la configurazione di una nuova licenza per user1@domain1.com quando ha installato l'applicazione.

{
  "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'applicazione è installata dall'amministratore

L'amministratore di domain1.com ha installato l'applicazione per tutti gli utenti dell'organizzazione.

Richiesta userLicense.get

Questa richiesta chiama il metodouserLicense.get per ottenere lo stato della licenza di user1@domain1.com e determinare se dispone dell'autorizzazione per utilizzare l'applicazione.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com

Corpo della risposta

Poiché l'amministratore di domain1.com ha installato l'applicazione, la risposta restituisce la licenza utente per user1@domain1.com, dove enabled è true, a indicare che l'amministratore di dominio per domain1.com ha attivato l'applicazione per questo dominio e state è ACTIVE, a indicare che user1@domain1.com ha una licenza valida e deve essere autorizzato a utilizzare l'applicazione.

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

Richiesta customerLicense.get

Questa richiesta chiama il metodo customerLicense.get per ottenere lo stato della licenza di domain1.com per determinare se ha accesso all'applicazione.

GET /appsmarket/v2/customerLicense/{applicationId}/{customerId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/customerLicense/{applicationId}/domain1.com

Corpo della risposta

La risposta restituisce la licenza cliente per domain1.com, dove state è ACTIVE, a indicare che il cliente ha una licenza valida.

{
  "kind": "appsmarket#customerLicense",
  "id": "{CUSTOMER_LICENSE_ID}",
  "applicationId": "{APPLICATION_ID}",
  "customerId": "domain1.com",
  "state": "ACTIVE",
  "editions": [
    {
      "editionId": "default_edition",
      "seatCount": -1
    }
  ]
}

L'applicazione è installata solo dall'amministratore per l'unità organizzativa (UO) di un utente specifico

L'applicazione ora è installata solo dall'amministratore per l'unità organizzativa di user2@domain1.com. Non è più installata dall'amministratore per tutti gli utenti dell'organizzazione.

Richiesta userLicense.get

Questa richiesta chiama il metodouserLicense.get per ottenere lo stato della licenza di user3@domain1.com e determinare se ha l'autorizzazione per utilizzare l'applicazione.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user3@domain1.com

Corpo della risposta

Poiché l'applicazione è installata solo dall'amministratore per user2@domain1.com, la risposta restituisce una licenza utente per user3@domain1.com, dove enabled è false, a indicare che l'amministratore di dominio per domain1.com non ha attivato l'applicazione per questo dominio e state è ACTIVE, a indicare che l'utente ha una licenza valida e deve essere autorizzato a utilizzare l'applicazione.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "domain1.com",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "user3@domain1.com"
}

Richiesta userLicense.get

Questa richiesta chiama il metodouserLicense.get per ottenere lo stato della licenza di user2@domain1.com e determinare se ha l'autorizzazione per utilizzare l'applicazione.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com

Corpo della risposta

Poiché l'applicazione è installata solo dall'amministratore per user2@domain1.com, la risposta restituisce una licenza utente per user2@domain1.com, dove enabled è true e 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'applicazione viene eliminata per tutti gli utenti dell'organizzazione

L'applicazione è stata eliminata per tutti gli utenti dell'organizzazione. L'utente, user1@domain1.com, ha ancora accesso all'applicazione perché l'aveva installata individualmente in precedenza.

Richiesta userLicense.get

Questa richiesta chiama il metodouserLicense.get per ottenere lo stato della licenza di user2@domain1.com e determinare se ha l'autorizzazione per utilizzare l'applicazione.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user2@domain1.com

Corpo della risposta

Poiché l'applicazione è stata eliminata per tutti gli utenti dell'organizzazione, la risposta restituisce una licenza utente per user2@domain1.com in cui enabled è false e state è UNLICENSED, il che indica che l'amministratore del dominio di questo utente non ha assegnato un posto per l'applicazione a questo utente.

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "UNLICENSED",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "user2@domain1.com"
}

Richiesta userLicense.get

Questa richiesta chiama il metodouserLicense.get per ottenere lo stato della licenza di user1@domain1.com e determinare se dispone dell'autorizzazione per utilizzare l'applicazione.

GET /appsmarket/v2/userLicense/{applicationId}/{userId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/userLicense/{applicationId}/user1@domain1.com

Corpo della risposta

Poiché l'utente user1@domain1.com ha installato l'applicazione singolarmente in precedenza, ha ancora l'autorizzazione per utilizzarla. La risposta restituisce una licenza utente in cui enabled è true e 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"
}

Le notifiche relative alle licenze di tutte le azioni precedenti

Richiesta licenseNotification.list

Una richiesta al metodo licenseNotification.list recupera tutte le notifiche relative alle licenze per l'applicazione.

GET /appsmarket/v2/licenseNotification/{applicationId}

curl -H "Authorization: Bearer {TOKEN}" https://appsmarket.googleapis.com/appsmarket/v2/licenseNotification/{applicationId}

Corpo della risposta

La risposta restituisce un elenco di notifiche di licenza per tutte le azioni eseguite sopra.

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