รับรายละเอียดการติดตั้งแอปและการให้สัญญาอนุญาต

คู่มือนี้จะแสดงวิธีรับการติดตั้งแอป Google Workspace Marketplace และรายละเอียดการอนุญาตให้ใช้สิทธิ ด้วยการแสดงตัวอย่างคำขอและการตอบกลับจาก Google Workspace Marketplace API

ยังไม่ได้ติดตั้งแอปพลิเคชัน

คำขอ 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 ได้ติดตั้งแอปพลิเคชันแล้ว การตอบกลับจะมีการแจ้งเตือนเกี่ยวกับใบอนุญาต 1 รายการ การแจ้งเตือนเกี่ยวกับใบอนุญาตจะมีการแจ้งเตือนการจัดสรรเนื่องจากมีการจัดสรรใบอนุญาตใหม่สำหรับ 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 โดยที่ enabled คือ true ซึ่งแสดงให้เห็นว่าผู้ดูแลระบบโดเมนของ domain1.com ได้เปิดใช้งานแอปพลิเคชันสำหรับโดเมนนี้แล้วและ state คือ ACTIVE ซึ่งแสดงว่า 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 โดยที่ state คือ ACTIVE ซึ่งแสดงว่าลูกค้ามีใบอนุญาตที่ถูกต้อง

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

แอปพลิเคชันติดตั้งโดยผู้ดูแลระบบสำหรับหน่วยขององค์กร (OU) ของผู้ใช้ที่ระบุเท่านั้น

ขณะนี้แอปพลิเคชันนี้จะมีเพียงผู้ดูแลระบบที่ติดตั้งสำหรับ OU ของ user2@domain1.com เท่านั้น โดยไม่ติดตั้งผู้ดูแลระบบสำหรับทุกคนในองค์กรอีกต่อไป

คำขอ 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 โดยที่ enabled คือ false ซึ่งแสดงว่าผู้ดูแลระบบโดเมนของ domain1.com ยังไม่ได้เปิดใช้งานแอปพลิเคชันสำหรับโดเมนนี้และ state คือ ACTIVE ซึ่งแสดงให้เห็นว่าผู้ใช้มีใบอนุญาตที่ถูกต้องและควรได้รับอนุญาตให้ใช้แอปพลิเคชัน

{
  "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 โดยที่ enabled คือ true และ 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"
}

ระบบจะลบแอปพลิเคชันสำหรับทุกคนในองค์กร

ลบแอปพลิเคชันสำหรับทุกคนในองค์กรแล้ว โดยผู้ใช้ 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 โดยที่ enabled คือ false และ state คือ UNLICENSED ซึ่งบ่งชี้ว่าผู้ดูแลระบบของโดเมนของผู้ใช้รายนี้ไม่ได้กำหนดใบอนุญาตสำหรับแอปพลิเคชันให้กับผู้ใช้รายนี้

{
  "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 ได้ติดตั้งแอปพลิเคชันแยกต่างหากไว้ก่อนหน้านี้ ผู้ใช้จึงยังคงมีสิทธิ์ใช้ได้ การตอบกลับจะแสดงใบอนุญาตของผู้ใช้โดยที่ enabled คือ true และ 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"
}

การแจ้งเตือนเกี่ยวกับใบอนุญาตจากการดำเนินการข้างต้นทั้งหมด

คำขอ 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}"
}