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

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