Bằng cách cung cấp các yêu cầu mẫu và phản hồi từ API Google Workspace Marketplace, 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 thông báo cấp phép nào.
{
"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 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 cấp phép. Thông báo cấp 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 domain1.com đã cài đặt ứng dụng 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ài đặt ứng dụng trên domain1.com, nên phản hồi sẽ trả về giấy phép người dùng cho user1@domain1.com, trong đó enabled
là true
, cho biết quản trị viên miền của domain1.com đã kích hoạt ứng dụng cho miền này và state
là ACTIVE
, cho biết 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 trả về giấy phép của khách hàng cho domain1.com, trong đó state
là ACTIVE
, cho biết 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
}
]
}
Ứng dụng chỉ được quản trị viên cài đặt cho một đơn vị tổ chức (OU) cụ thể của người dùng
Ứng dụng hiện chỉ được quản trị viên cài đặt cho OU của 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ì chỉ quản trị viên mới cài đặt ứng dụng cho user2@domain1.com, nên phản hồi sẽ trả về một giấy phép người dùng cho user3@domain1.com, trong đó enabled
là false
, 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à state
là ACTIVE
, 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ì chỉ quản trị viên mới cài đặt ứng dụng cho user2@domain1.com, nên phản hồi sẽ trả về một giấy phép người dùng cho user2@domain1.com, trong đó enabled
là true
và state
là 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"
}
Ứng dụng sẽ bị xoá đối với mọi người trong tổ chức
Ứng dụng đã 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 đó họ đã cài đặt ứng dụng theo cách 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á cho tất cả mọi người trong tổ chức, nên phản hồi sẽ trả về một giấy phép người dùng cho user2@domain1.com, trong đó enabled
là false
và state
là UNLICENSED
, cho biết rằng quản trị viên của miền của người dùng này không chỉ định chỗ ngồi cho ứng dụng cho 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 riêng ứng dụng trước đó, nên họ vẫn có quyền sử dụng ứng dụng. Phản hồi trả về một giấy phép người dùng, trong đó enabled
là true
và state
là 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"
}
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 gửi đến 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 sẽ trả về danh sách thông báo cấp phép cho tất cả các thao tá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}"
}