من خلال تقديم أمثلة على الطلبات وردودها من Google Workspace Marketplace API، يوضِّح هذا الدليل طريقة الحصول على تفاصيل تثبيت التطبيق والترخيص في تطبيق Google Workspace Marketplace.
لم يتم تثبيت التطبيق حتى الآن
طلب ترخيص NotificationNotification.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.
طلب ترخيص NotificationNotification.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
للحصول على حالة الترخيص
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
للحصول على حالة الترخيص
للنطاق 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)
تم الآن تثبيت التطبيق فقط على الوحدة التنظيمية لـ user2@domain1.com. فهو لم يعد مثبتًا للجميع في المؤسسة.
طلب ترخيص المستخدم
يستدعي هذا الطلب طريقة 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
للحصول على حالة الترخيص
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
للحصول على حالة الترخيص
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
للحصول على حالة الترخيص
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"
}
إشعارات الترخيص من جميع الإجراءات أعلاه
طلب ترخيص NotificationNotification.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}"
}