Enterprise License Manager API:开发者指南

本文档介绍了账号级管理员和转销商管理员如何使用 Enterprise License Manager API 管理用户许可分配。启用账号的产品 SKU 许可并创建用户后,您可以使用 Enterprise License Manager API 为账号的用户分配、更新、检索和删除许可。

在此版本中,Enterprise License Manager API 由账号和转销商管理员使用。具有 License Management 权限的受托管理员也可以使用 Enterprise License Manager API。

注意:Enterprise License Manager API 由 Google 客户使用。如需了解 Google 第三方应用开发者如何管理许可,请参阅 Google Workspace Marketplace API

Enterprise License Manager API 基于网络服务的 Representational State Transfer (RESTful) 设计方法。

管理许可

分配许可

在此操作之前,客户或转销商已订购 Google 产品许可并已创建用户。如需向此用户分配其中一种商品许可,请使用以下 POST HTTP 请求。添加 Authorization 标头,如授权请求中所述。如需了解商品 ID 和 SKU ID,请参阅该 API 支持的商品和 SKU

POST https://www.googleapis.com/apps/licensing/v1/product/productId/sku/skuId/user

注意:您可以为用户分配各种不同的 Google 产品的许可。但对于每种产品,用户一次只能获得一个 SKU 许可。通过使用此 API,您可以将用户的 SKU 许可重新分配给产品中的其他 SKU 许可。

以下示例将 Google-Drive-storage-20GB SKU 分配给主电子邮件地址为 alex@example.com 的用户:

POST https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-20GB/user

JSON 请求正文:

{
  "userId" : "alex@example.com",
}

成功的响应会返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅该 API 的错误代码。如果成功,响应将以 JSON 数据格式返回许可分配状态。

JSON 响应

{
  "kind": "licensing#licenseAssignment",
  "etags": "etag value",
  "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-20GB/user/alex@example.com",
  "userId": "alex@example.com",
  "productId": "Google-Drive-storage",
  "skuId": "Google-Drive-storage-20GB",
  "skuName": "Google Drive storage 20 GB",
  "productName": "Google Drive storage"
}

如需了解详情,请参阅 licenseAssignments insert 方法参考页面。

将用户的商品 SKU 重新分配为同一商品中的其他 SKU

如需将用户的许可重新分配给同一产品中的新许可 SKU,请使用以下 PUT HTTP 请求。该 API 还支持补丁语法。添加 Authorization 标头,如授权请求中所述。如需了解商品 ID 和 SKU ID,请参阅该 API 支持的商品和 SKU

PUT https://www.googleapis.com/apps/licensing/v1/product/productId/sku/the current skuId/user/user's email

此示例将当前的 20GB Google 云端硬盘存储空间 SKU 更新为 50GB。当前许可 SKU 位于请求的 URI 中,新许可 SKU 位于请求正文中:

PUT https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-20GB/user/alex@example.com

JSON 请求正文包含:

{
  "kind": "licensing#licenseAssignment",
  "etags": "etag value",
  "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com",
  "userId": "alex@example.com",
  "productId": "Google-Drive-storage",
  "skuId": "Google-Drive-storage-50GB",
  "skuName": "Google Drive storage 50 GB",
  "productName": "Google Drive storage"
}

成功的响应会返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅该 API 的错误代码。如果成功,响应将以 JSON 数据格式返回许可分配状态。

JSON 响应

{
  "kind": "licensing#licenseAssignment",
  "etags": "etag value",
  "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com",
  "userId": "alex@example.com",
  "productId": "Google-Drive-storage",
  "skuId": "Google-Drive-storage-50GB",
  "skuName": "Google Drive storage 50 GB",
  "productName": "Google Drive storage"
}

如需了解详情,请参阅 licenseAssignments 更新方法补丁方法参考页面。

检索已分配特定产品许可的所有用户

如需获取特定商品的所有用户许可,请使用以下 GET HTTP 请求。添加 Authorization 标头,如授权请求中所述。customerId 查询字符串是客户的主域名。maxResults 查询字符串决定了 API 响应中返回的用户许可条目数量:

GET https://www.googleapis.com/apps/licensing/v1/product/productId/users?customerId=primary domain name&maxResults=max results per page

如需查看产品和 SKU ID,请参阅 API 的可用产品和 SKU

下例显示了针对 example.com 网域中所有已分配 Google 云端硬盘存储空间产品许可的用户的搜索结果的第一页:

GET https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/users?customerId=example.com&maxResults=2

成功的响应会返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅 API 的错误代码。如果成功,响应将以 JSON 格式返回许可列表。

JSON 响应

{
  "kind" : "licensing#licenseAssignmentList",
  "etag": "etag value",
  "nextPageToken" : "the next page token value",
  "items": [
  {
    "kind": "licensing#licenseAssignment",
    "etags": "etag value",
    "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com",
    "userId": "alex@example.com",
    "productId": "Google-Drive-storage",
    "skuId": "Google-Drive-storage-50GB",
    "skuName": "Google Drive storage 50 GB",
    "productName": "Google Drive storage"
  },
  {
    "kind": "licensing#licenseAssignment",
    "etags": "etag value",
    "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-200GB/user/keshav@example.com",
    "userId": "keshav@example.com",
    "productId": "Google-Drive-storage",
    "skuId": "Google-Drive-storage-200GB",
    "skuName": "Google Drive storage 200 GB",
    "productName": "Google Drive storage"
  },
  ...
}

如需了解详情,请参阅 LicenseAssignments listForProduct 方法参考页面。

检索为特定商品 SKU 分配了许可的所有用户

如需获取拥有特定产品 SKU 许可的所有用户的列表,请使用以下 GET HTTP 请求。添加 Authorization 标头,如授权请求中所述。customerId 查询字符串是客户的主域名。maxResults 查询字符串决定了 API 响应中返回的用户条目数量:

GET https://www.googleapis.com/apps/licensing/v1/product/productId/sku/skuId/users?customerId=primary domain name&maxResults=max results per response page

如需了解产品和 SKU ID,请参阅 API 的可用产品和 SKU

此示例返回 example.com 网域中已分配 Google 云端硬盘存储空间 200GB SKU 许可的所有用户的第一页。响应中每页列出两个用户条目:

GET https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-200GB/users?customerId=example.com&maxResults=2

成功的响应会返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅 API 的错误代码。如果成功,响应会以 JSON 格式返回许可列表。

JSON 响应

{
  "kind" : "licensing#licenseAssignmentList",
   "etag": "etag value",
   "nextPageToken" : "next page token's value",
   "items": [
    {
     "kind": "licensing#licenseAssignment",
     "etags": "etag value",
     "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-200GB/user/alex@example.com",
     "userId": "alex@example.com",
     "productId": "Google-Drive-storage",
     "skuId": "Google-Drive-storage-200GB",
     "skuName": "Google Drive storage 200 GB",
     "productName": "Google Drive storage"
    },
    {
     "kind": "licensing#licenseAssignment",
     "etags": "etag value",
     "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-200GB/user/mary@example.com",
     "userId": "mary@example.com",
     "productId": "Google-Drive-storage",
     "skuId": "Google-Drive-storage-200GB",
     "skuName": "Google Drive storage 200 GB",
     "productName": "Google Drive storage"
    },
    ...
  }

如需了解详情,请参阅 licenseAssignments listForProductAndSku 方法参考页面。

根据商品 SKU 检索特定用户的许可

如需按产品 SKU 获取特定用户的许可,请使用以下 GET HTTP 请求。添加 Authorization 标头,如授权请求中所述。如需了解商品 ID 和 SKU ID,请参阅该 API 支持的商品和 SKU

GET https://www.googleapis.com/apps/licensing/v1/product/productId/sku/skuId/user/userId

以下示例会为 userId 为 alex@example.com 的用户获取 Google 云端硬盘存储空间 50GB 产品 SKU:

GET https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com

如果用户拥有此许可,则响应为成功,并返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅该 API 的错误代码。如果成功,响应将以 JSON 格式返回用户许可。

JSON 响应

{
  "kind": "licensing#licenseAssignment",
  "etag": "etag value",
  "selfLink": "https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com",
  "userId": "keshav@example.com",
  "productId": "Google-Drive-storage",
  "skuId": "Google-Drive-storage-50GB",
  "skuName": "Google Drive storage 50 GB",
  "productName": "Google Drive storage"
}

如需了解详情,请参阅 licenseAssignments get 方法参考页面。

删除许可

如需取消向用户分配许可,请使用以下 DELETE HTTP 请求。添加 Authorization 标头,如授权请求中所述。如需了解商品 ID 和 SKU ID,请参阅该 API 支持的商品和 SKU

DELETE https://www.googleapis.com/apps/licensing/v1/product/productId/sku/skuId/user/userId

在本例中,系统会从 userId 为 alex@example.com 的用户取消分配 Google-Drive-storage-50GB 许可:

DELETE https://www.googleapis.com/apps/licensing/v1/product/Google-Drive-storage/sku/Google-Drive-storage-50GB/user/alex@example.com

成功的响应会返回 200 HTTP 状态代码。如需了解可能的错误代码,请参阅该 API 的错误代码

如需了解详情,请参阅 licenseAssignments delete 方法参考页面。

错误代码

如果请求失败,响应中会简要说明错误:

错误代码 说明
400 请求无效 - 用户电子邮件地址无效。
400 请求无效 - SKU/商品不存在。
401 操作者没有调用此 API 的凭据。
404 如果用户没有此许可,响应将包含“未找到”错误代码。
412 未满足前提条件。如需详细了解此错误,请查看 message 字段。例如:
  • Auto License switching is not allowed.
  • Auto License un-assignment is not allowed.
  • For reassign operations, the new SKU should be different from the old SKU: sku
  • Reassign operation can't be performed on different products: product1, product2
  • Reassign operation can't be performed on different users: user1, user2
  • There aren't enough available licenses for the specified product-SKU pair
  • User already has a license for the specified product and SKU
  • User already has a license of the product, but with a different SKU. To reassign a new SKU for this product, use the 'update' operation.
503 License Manager 服务不可用。