¿Tienes 5 minutos? Responde una breve encuesta en línea para ayudarnos a mejorar la documentación de Google Workspace Marketplace.

Obtén información sobre la instalación de la app y las licencias

Cuando se proporcionan solicitudes de ejemplo y respuestas de la API de Google Workspace Marketplace, esta guía muestra cómo obtener los detalles de la licencia y la instalación de la app de Google Workspace Marketplace.

Todavía no se instaló la aplicación

Solicitud de LicenseNotification.list

Esta solicitud llama al método licenseNotification.list para recuperar una lista de notificaciones de licencia de una aplicación específica.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Cuerpo de la respuesta

Dado que la aplicación aún no se instaló, la respuesta a esta solicitud no incluye ninguna notificación de licencias.

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

La aplicación se instala de forma individual.

Un usuario, user1@domain1.com, instaló la aplicación de forma individual desde Google Workspace Marketplace.

Solicitud de LicenseNotification.list

Esta solicitud llama al método licenseNotification.list y recupera la lista de notificaciones de licencia de la aplicación que instaló el usuario.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Cuerpo de la respuesta

Dado que user1@domain1.com instaló la aplicación, la respuesta incluye una notificación de licencia. La notificación de licencia incluye una notificación de aprovisionamiento, ya que se aprovisionó una licencia nueva para user1@domain1.com cuando se instaló la aplicación.

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

El administrador instaló la aplicación

El administrador de domain1.com instaló la aplicación para todos los miembros de la organización.

Solicitud userLicense.get

Esta solicitud llama al método userLicense.get para obtener el estado de licencia de user1@domain1.com y determinar si tiene permiso para usar la aplicación.

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

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

Cuerpo de la respuesta

Dado que domain1.com tiene instalado la aplicación por parte del administrador, la respuesta muestra la licencia de usuario de user1@domain1.com, en la que enabled es true, lo que indica que user1@domain1.com activó la aplicación para este dominio, y state es ACTIVE, lo que indica que user1@domain1.com tiene una licencia válida y debe poder usarla.

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

Solicitud de customerLicense.get

Esta solicitud llama al método customerLicense.get para obtener el estado de licencia de domain1.com a fin de determinar si tiene acceso a la aplicación.

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

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

Cuerpo de la respuesta

La respuesta muestra la licencia del cliente para domain1.com, en la que state es ACTIVE, lo que indica que el cliente tiene una licencia válida.

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

La aplicación solo está instalada por el administrador para la unidad organizativa (UO) de un usuario específico

Ahora la aplicación solo está instalada por el administrador para la UO de user2@domain1.com. Ya no está instalado para administradores de todos los miembros de la organización.

Solicitud userLicense.get

Esta solicitud llama al método userLicense.get para obtener el estado de licencia de user3@domain1.com y determinar si tiene permiso para usar la aplicación.

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

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

Cuerpo de la respuesta

Dado que la aplicación solo está instalada por el administrador en user2@domain1.com, la respuesta muestra una licencia de usuario para user3@domain1.com, en la que enabled es false, lo que indica que el administrador del dominio no activó la aplicación para este dominio, y state es ACTIVE, lo que indica que el usuario tiene una licencia válida y debe poder usarla.

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

Solicitud userLicense.get

Esta solicitud llama al método userLicense.get para obtener el estado de licencia de user2@domain1.com y determinar si tiene permiso para usar la aplicación.

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

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

Cuerpo de la respuesta

Dado que la aplicación solo está instalada por el administrador en user2@domain1.com, la respuesta muestra una licencia de usuario para user2@domain1.com, en la que enabled es true y state es 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"
}

La aplicación se borra para todos los miembros de la organización.

Se borró la aplicación para todos los miembros de la organización. El usuario, usuario1@dominio1.com, aún tiene acceso a la aplicación porque la instaló de forma individual.

Solicitud userLicense.get

Esta solicitud llama al método userLicense.get para obtener el estado de licencia de user2@domain1.com y determinar si tiene permiso para usar la aplicación.

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

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

Cuerpo de la respuesta

Dado que la aplicación se borró para todos los miembros de la organización, la respuesta muestra una licencia de usuario para user2@domain1.com, en la que enabled es false y state es UNLICENSED, lo que indica que el administrador del dominio de este usuario no asignó una licencia para la aplicación a este usuario.

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

Solicitud userLicense.get

Esta solicitud llama al método userLicense.get para obtener el estado de licencia de user1@domain1.com y determinar si tiene permiso para usar la aplicación.

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

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

Cuerpo de la respuesta

Dado que user1@domain1.com ya instaló la aplicación de forma individual, aún tiene permiso para usarla. La respuesta muestra una licencia de usuario en la que enabled es true y state es 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"
}

Las notificaciones de licencias de todas las acciones anteriores

Solicitud de LicenseNotification.list

Una solicitud al método licenseNotification.list recupera todas las notificaciones de licencia de la aplicación.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Cuerpo de la respuesta

La respuesta muestra una lista de notificaciones de licencias para todas las acciones realizadas anteriormente.

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