앱 설치 및 라이선스 세부정보 확인

이 가이드에서는 Google Workspace Marketplace API에 대한 요청 및 응답의 예시를 제공하여 Google Workspace Marketplace 앱 설치 및 라이선스 세부정보를 가져오는 방법을 보여줍니다.

애플리케이션이 아직 설치되지 않음

licenseNotification.list 요청

이 요청은 licenseNotification.list 메서드를 호출하여 특정 애플리케이션의 라이선스 알림 목록을 검색합니다.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

응답 본문

애플리케이션이 아직 설치되지 않았으므로 이 요청에 대한 응답에는 라이선스 알림이 포함되지 않습니다.

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

애플리케이션이 개별적으로 설치됨

user1@domain1.com 사용자는 Google Workspace Marketplace에서 애플리케이션을 개별적으로 설치했습니다.

licenseNotification.list 요청

이 요청은 licenseNotification.list 메서드를 호출하고 사용자가 설치한 애플리케이션의 라이선스 알림 목록을 검색합니다.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

응답 본문

user1@domain1.com이 애플리케이션을 설치했으므로 응답에 라이선스 알림이 하나 포함됩니다. user1@domain1.com 사용자가 애플리케이션을 설치할 때 새 라이선스가 프로비저닝되었으므로 라이선스 알림에 프로비저닝 알림이 포함됩니다.

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

관리자가 설치한 애플리케이션

domain1.com의 관리자가 조직의 모든 사용자를 위해 애플리케이션을 설치했습니다.

userLicense.get 요청

이 요청은 userLicense.get 메서드를 호출하여 user1@domain1.com의 라이선스 상태를 가져오고 애플리케이션을 사용할 권한이 있는지 확인합니다.

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

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

응답 본문

domain1.com에 관리자가 애플리케이션을 설치했으므로 응답은 user1@domain1.com의 사용자 라이선스를 반환합니다. 여기서 enabledtrue로, domain1.com의 도메인 관리자가 이 도메인의 애플리케이션을 활성화했음을 나타내고 stateACTIVE로, user1@domain1.com에 유효한 라이선스가 있고 애플리케이션 사용이 허용되어야 함을 나타냅니다.

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

customerLicense.get 요청

이 요청은 customerLicense.get 메서드를 호출하여 domain1.com의 라이선스 상태를 가져와 애플리케이션에 액세스할 수 있는지 확인합니다.

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

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

응답 본문

응답은 domain1.com의 고객 라이선스를 반환하며 여기서 stateACTIVE입니다. 이는 고객에게 유효한 라이선스가 있음을 나타냅니다.

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

애플리케이션이 특정 사용자의 조직 단위 (OU)에 대해서만 관리자가 설치함

이제 user2@domain1.com의 OU에만 관리자가 애플리케이션을 설치했습니다. 더 이상 조직의 모든 사용자를 위해 관리자가 설치하지 않습니다.

userLicense.get 요청

이 요청은 userLicense.get 메서드를 호출하여 user3@domain1.com의 라이선스 상태를 가져오고 애플리케이션을 사용할 권한이 있는지 확인합니다.

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

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

응답 본문

애플리케이션이 user2@domain1.com에 대해서만 관리자가 설치했으므로 응답은 user3@domain1.com의 사용자 라이선스를 반환합니다. 여기서 enabledfalse로, domain1.com의 도메인 관리자가 이 도메인의 애플리케이션을 활성화하지 않았음을 나타내고 stateACTIVE로, 사용자가 유효한 라이선스를 보유하고 있으므로 애플리케이션 사용이 허용되어야 함을 나타냅니다.

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

userLicense.get 요청

이 요청은 userLicense.get 메서드를 호출하여 user2@domain1.com의 라이선스 상태를 가져오고 애플리케이션을 사용할 권한이 있는지 확인합니다.

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

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

응답 본문

애플리케이션이 user2@domain1.com에 대해서만 관리자가 설치했으므로 응답은 user2@domain1.com의 사용자 라이선스를 반환하며 여기서 enabledtrue이고 stateACTIVE입니다.

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

조직의 모든 사용자의 애플리케이션이 삭제됨

조직의 모든 사용자에게서 애플리케이션이 삭제되었습니다. user1@domain1.com 사용자는 이전에 애플리케이션을 개별적으로 설치했기 때문에 애플리케이션에 계속 액세스할 수 있습니다.

userLicense.get 요청

이 요청은 userLicense.get 메서드를 호출하여 user2@domain1.com의 라이선스 상태를 가져오고 애플리케이션을 사용할 권한이 있는지 확인합니다.

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

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

응답 본문

조직의 모든 사용자의 애플리케이션이 삭제되었으므로 응답은 user2@domain1.com의 사용자 라이선스를 반환하며 여기서 enabledfalse이고 stateUNLICENSED입니다. 이는 이 사용자의 도메인 관리자가 이 사용자에게 애플리케이션 좌석을 할당하지 않았음을 나타냅니다.

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

userLicense.get 요청

이 요청은 userLicense.get 메서드를 호출하여 user1@domain1.com의 라이선스 상태를 가져오고 애플리케이션을 사용할 권한이 있는지 확인합니다.

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

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

응답 본문

user1@domain1.com은 이전에 애플리케이션을 개별적으로 설치했으므로 여전히 애플리케이션을 사용할 권한이 있습니다. 응답은 사용자 라이선스를 반환합니다. 여기서 enabledtrue이고 stateACTIVE입니다.

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

위의 모든 작업에 대한 라이선스 알림

licenseNotification.list 요청

licenseNotification.list 메서드에 대한 요청은 애플리케이션의 모든 라이선스 알림을 검색합니다.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

응답 본문

응답은 위에 실행된 모든 작업에 대한 라이선스 알림 목록을 반환합니다.

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