من خلال تقديم أمثلة على الطلبات والردود من 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 حيث يكون 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) لمستخدم معيّن.
أصبح التطبيق الآن مثبَّتًا من قِبل المشرف فقط لوحدة العمل 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
للحصول على حالة الترخيص
لمستخدم1@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}"
}