الحصول على تفاصيل تثبيت التطبيق والترخيص

من خلال تقديم أمثلة على الطلبات والردّات من 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 للحصول على حالة الترخيص للمستخدم 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}"
}