Lấy thông tin chi tiết về việc cài đặt ứng dụng và cấp phép

Bằng cách cung cấp các yêu cầu và phản hồi mẫu từ Google Workspace Marketplace API, hướng dẫn này cho biết cách lấy thông tin chi tiết về việc cài đặt và cấp phép ứng dụng trên Google Workspace Marketplace.

Ứng dụng chưa được cài đặt

yêu cầu licenseNotification.list

Yêu cầu này gọi phương thức licenseNotification.list để truy xuất danh sách thông báo cấp phép cho một ứng dụng cụ thể.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Nội dung phản hồi

Vì ứng dụng chưa được cài đặt nên phản hồi cho yêu cầu này không bao gồm bất kỳ thông báo nào về việc cấp phép.

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

Ứng dụng được cài đặt riêng lẻ

Một người dùng (user1@domain1.com) đã cài đặt riêng ứng dụng này từ Google Workspace Marketplace.

yêu cầu licenseNotification.list

Yêu cầu này gọi phương thức licenseNotification.list và truy xuất danh sách thông báo cấp phép cho ứng dụng mà người dùng đã cài đặt.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Nội dung phản hồi

Vì user1@domain1.com đã cài đặt ứng dụng, nên phản hồi sẽ bao gồm một thông báo về giấy phép. Thông báo về giấy phép bao gồm một thông báo cấp phép vì một giấy phép mới đã được cấp cho user1@domain1.com khi họ cài đặt ứng dụng.

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

Ứng dụng do quản trị viên cài đặt

Quản trị viên của miền domain1.com đã cài đặt ứng dụng này cho mọi người trong tổ chức.

yêu cầu userLicense.get

Yêu cầu này gọi phương thức userLicense.get để lấy trạng thái cấp phép của user1@domain1.com và xác định xem họ có quyền sử dụng ứng dụng hay không.

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

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

Nội dung phản hồi

Vì quản trị viên của domain1.com đã cài đặt ứng dụng, nên phản hồi sẽ trả về giấy phép người dùng cho user1@domain1.com, trong đó enabledtrue, cho biết rằng quản trị viên miền của domain1.com đã kích hoạt ứng dụng cho miền này và stateACTIVE, cho biết rằng user1@domain1.com có giấy phép hợp lệ và được phép sử dụng ứng dụng.

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

yêu cầu customerLicense.get

Yêu cầu này gọi phương thức customerLicense.get để lấy trạng thái cấp phép của domain1.com nhằm xác định xem họ có quyền truy cập vào ứng dụng hay không.

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

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

Nội dung phản hồi

Phản hồi này trả về giấy phép khách hàng cho domain1.com, trong đó stateACTIVE, cho biết rằng khách hàng có giấy phép hợp lệ.

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

Quản trị viên chỉ cài đặt ứng dụng cho một đơn vị tổ chức (OU) cụ thể của người dùng

Giờ đây, ứng dụng chỉ được quản trị viên cài đặt cho OU của người dùng user2@domain1.com. Ứng dụng này không còn được quản trị viên cài đặt cho mọi người trong tổ chức nữa.

yêu cầu userLicense.get

Yêu cầu này gọi phương thức userLicense.get để lấy trạng thái cấp phép của user3@domain1.com và xác định xem họ có quyền sử dụng ứng dụng hay không.

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

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

Nội dung phản hồi

Vì ứng dụng chỉ được quản trị viên cài đặt cho user2@domain1.com, nên phản hồi sẽ trả về giấy phép người dùng cho user3@domain1.com, trong đó enabledfalse, cho biết rằng quản trị viên miền của domain1.com chưa kích hoạt ứng dụng cho miền này và stateACTIVE, cho biết rằng người dùng có giấy phép hợp lệ và được phép sử dụng ứng dụng.

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

yêu cầu userLicense.get

Yêu cầu này gọi phương thức userLicense.get để lấy trạng thái cấp phép của user2@domain1.com và xác định xem họ có quyền sử dụng ứng dụng hay không.

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

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

Nội dung phản hồi

Vì ứng dụng chỉ được quản trị viên cài đặt cho người dùng user2@domain1.com, nên phản hồi sẽ trả về giấy phép người dùng cho user2@domain1.com, trong đó enabledtruestateACTIVE.

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

Ứng dụng sẽ bị xoá đối với mọi người trong tổ chức

Ứng dụng này đã bị xoá đối với mọi người trong tổ chức. Người dùng user1@domain1.com vẫn có quyền truy cập vào ứng dụng vì trước đây họ đã cài đặt ứng dụng này riêng lẻ.

yêu cầu userLicense.get

Yêu cầu này gọi phương thức userLicense.get để lấy trạng thái cấp phép của user2@domain1.com và xác định xem họ có quyền sử dụng ứng dụng hay không.

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

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

Nội dung phản hồi

Vì ứng dụng đã bị xoá đối với mọi người trong tổ chức, nên phản hồi sẽ trả về giấy phép người dùng cho user2@domain1.com, trong đó enabledfalsestateUNLICENSED, cho biết rằng quản trị viên miền của người dùng này không chỉ định một vị trí cho ứng dụng đối với người dùng này.

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

yêu cầu userLicense.get

Yêu cầu này gọi phương thức userLicense.get để lấy trạng thái cấp phép của user1@domain1.com và xác định xem họ có quyền sử dụng ứng dụng hay không.

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

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

Nội dung phản hồi

Vì user1@domain1.com đã cài đặt ứng dụng này riêng lẻ trước đó, nên họ vẫn có quyền sử dụng ứng dụng. Phản hồi này trả về một giấy phép người dùng trong đó enabledtruestateACTIVE.

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

Thông báo về giấy phép từ tất cả các hành động nêu trên

yêu cầu licenseNotification.list

Yêu cầu đối với phương thức licenseNotification.list sẽ truy xuất tất cả thông báo cấp phép cho ứng dụng.

GET /appsmarket/v2/licenseNotification/{applicationId}

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

Nội dung phản hồi

Phản hồi này trả về danh sách thông báo về giấy phép cho tất cả các thao tác được thực hiện ở trê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"
        }
      ]
    },
    {
      "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}"
}