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

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