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

من خلال تقديم نماذج لطلبات وردود من 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 التطبيق للجميع في المؤسسة.

طلب user License.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"
}

طلب ترخيص customer.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
    }
  ]
}

لم يتم تثبيت التطبيق إلا من خلال المشرف للوحدة التنظيمية لمستخدم محدّد.

لم يتم تثبيت التطبيق الآن إلا من خلال المشرف للوحدة التنظيمية user2@domain1.com. لم يعد المشرف مثبتًا للجميع في المؤسسة.

طلب user License.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 لم يفعِّل هذا النطاق وأنّ مشرف النطاق هو ACTIVE، ما يشير إلى أنّ المستخدم يملك ترخيصًا صالحًا ويجب أن يكون مسموحًا له باستخدام التطبيق.state

{
  "kind": "appsmarket#userLicense",
  "enabled": false,
  "state": "ACTIVE",
  "editionId": "default_edition",
  "customerId": "domain1.com",
  "applicationId": "{APPLICATION_ID}",
  "id": "{USER_LICENSE_ID}",
  "userId": "user3@domain1.com"
}

طلب user License.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، الوصول إلى التطبيق لأنه قد ثبّت التطبيق بشكل فردي في السابق.

طلب user License.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"
}

طلب user License.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}"
}