API Enterprise License Manager: Hướng dẫn dành cho nhà phát triển

Tài liệu này mô tả cách quản trị viên cấp tài khoản và người bán lại có thể sử dụng API Enterprise License Manager để quản lý việc chỉ định giấy phép của người dùng. Sau khi bạn bật giấy phép SKU sản phẩm của tài khoản và tạo người dùng, hãy sử dụng API Trình quản lý giấy phép doanh nghiệp để chỉ định, cập nhật, truy xuất và xoá giấy phép cho người dùng của tài khoản.

Trong phiên bản này, quản trị viên tài khoản và đại lý sử dụng API Enterprise License Manager. Quản trị viên được uỷ quyền có đặc quyền License Management cũng có thể sử dụng API Trình quản lý giấy phép doanh nghiệp.

Lưu ý: Một khách hàng của Google sử dụng API Enterprise License Manager. Để biết thông tin về cách nhà phát triển ứng dụng bên thứ ba của Google quản lý giấy phép, hãy xem API Google Workspace Marketplace.

API Trình quản lý giấy phép doanh nghiệp dựa trên phương pháp thiết kế Chuyển trạng thái đại diện (RESTful) cho các dịch vụ web.

Quản lý giấy phép

Cấp phép

Trước hoạt động này, khách hàng hoặc đại lý đã đặt hàng giấy phép sản phẩm của Google và đã tạo người dùng. Để chỉ định một trong các giấy phép sản phẩm này cho người dùng này, hãy sử dụng yêu cầu HTTP POST sau đây. Thêm tiêu đề Authorization như mô tả trong phần Ủy quyền cho yêu cầu. Đối với mã sản phẩm và mã SKU, hãy xem Sản phẩm và SKU hiện có của API:

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

Lưu ý: Một người dùng có thể được chỉ định giấy phép cho nhiều sản phẩm của Google. Tuy nhiên, mỗi người dùng chỉ được chỉ định một giấy phép SKU cho mỗi sản phẩm tại một thời điểm. Bằng cách sử dụng API, bạn có thể chỉ định lại giấy phép SKU của người dùng cho một giấy phép SKU khác trong sản phẩm.

Ví dụ này chỉ định SKU Google-Drive-storage-20GB cho người dùng có địa chỉ email chính là alex@example.com:

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

Nội dung yêu cầu JSON:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem Mã lỗi của API. Nếu thành công, phản hồi sẽ trả về trạng thái chỉ định cấp phép ở định dạng dữ liệu JSON.

Phản hồi 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"
}

Để biết thêm thông tin, hãy xem trang tham khảo về phương thức chèn licenseAssignments.

Chỉ định lại SKU sản phẩm của người dùng bằng một SKU khác trong cùng một sản phẩm

Để chỉ định lại giấy phép của người dùng cho một SKU giấy phép mới trong cùng một sản phẩm, hãy sử dụng yêu cầu HTTP PUT sau đây. API này cũng hỗ trợ ngữ pháp bản vá. Thêm tiêu đề Authorization như mô tả trong phần Uỷ quyền yêu cầu. Đối với mã sản phẩm và mã SKU, hãy xem Sản phẩm và SKU hiện có của API:

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

Ví dụ này cập nhật SKU Google-Drive-storage-20GB hiện tại bằng Google-Drive-storage-50GB. SKU giấy phép hiện tại nằm trong URI của yêu cầu và SKU giấy phép mới nằm trong phần nội dung của yêu cầu:

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

Nội dung yêu cầu JSON có :

{
  "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"
}

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem phần Mã lỗi của API. Nếu thành công, phản hồi sẽ trả về trạng thái chỉ định giấy phép ở định dạng dữ liệu JSON.

Phản hồi 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"
}

Để biết thêm thông tin, hãy xem các trang tham khảo về phương thức cập nhậtphương thức vá của licenseAssignments.

Truy xuất tất cả người dùng được chỉ định giấy phép cho một sản phẩm cụ thể

Để lấy tất cả giấy phép của người dùng cho một sản phẩm cụ thể, hãy sử dụng yêu cầu HTTP GET sau đây. Thêm tiêu đề Authorization như mô tả trong phần Cho phép yêu cầu. Chuỗi truy vấn customerId là tên miền chính của khách hàng. Chuỗi truy vấn maxResults xác định số mục giấy phép của người dùng được trả về trong phản hồi của API:

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

Đối với mã sản phẩm và mã SKU, hãy xem Sản phẩm và SKU hiện có của API.

Ví dụ này liệt kê trang kết quả đầu tiên cho tất cả người dùng trong miền example.com được chỉ định giấy phép cho sản phẩm Google-Drive-storage:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem Mã lỗi của API. Nếu thành công, phản hồi sẽ trả về danh sách cấp phép ở định dạng JSON.

Phản hồi 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"
  },
  ...
}

Để biết thêm thông tin, hãy xem trang tham khảo listForProduct method của giấy phép LicenseAssignments.

Truy xuất tất cả người dùng được chỉ định giấy phép cho một SKU sản phẩm cụ thể

Để nhận danh sách tất cả người dùng có giấy phép cho một SKU sản phẩm cụ thể, hãy sử dụng yêu cầu HTTP GET sau đây. Thêm tiêu đề Authorization như mô tả trong phần Uỷ quyền yêu cầu. Chuỗi truy vấn customerId là tên miền chính của khách hàng. Chuỗi truy vấn maxResults xác định số lượng mục nhập người dùng được trả về trong phản hồi của API:

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

Đối với mã sản phẩm và mã SKU, hãy xem Sản phẩm và SKU hiện có của API

Ví dụ này trả về trang đầu tiên của tất cả người dùng trong miền example.com được chỉ định giấy phép cho SKU Google-Drive-storage-200GB. Nội dung phản hồi liệt kê hai mục nhập người dùng trên mỗi trang:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem Mã lỗi của API. Nếu thành công, phản hồi sẽ trả về danh sách cấp phép ở định dạng JSON.

Phản hồi 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"
    },
    ...
  }

Để biết thêm thông tin, hãy xem trang tham khảo listForProductAndSku method của giấy phép LicenseAssignments.

Truy xuất giấy phép của một người dùng cụ thể theo SKU sản phẩm

Để lấy giấy phép của một người dùng cụ thể theo SKU sản phẩm, hãy sử dụng yêu cầu HTTP GET sau đây. Thêm tiêu đề Authorization như mô tả trong phần Cho phép yêu cầu. Để biết mã sản phẩm và mã SKU, hãy xem các Sản phẩm và SKU có sẵn của API:

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

Ví dụ này lấy SKU sản phẩm bộ nhớ Google Drive 50 GB cho người dùng có userId là alex@example.com:

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

Nếu người dùng có giấy phép này, đó là phản hồi thành công và mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem Mã lỗi của API. Nếu thành công, phản hồi sẽ trả về giấy phép của người dùng ở định dạng JSON.

Phản hồi 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"
}

Để biết thêm thông tin, hãy xem trang tham khảo về phương thức get của licenseAssignments.

Xoá giấy phép

Để huỷ chỉ định giấy phép cho người dùng, hãy sử dụng yêu cầu HTTP DELETE sau đây. Thêm tiêu đề Authorization như mô tả trong phần Uỷ quyền yêu cầu. Đối với mã sản phẩm và mã SKU, hãy xem Sản phẩm và SKU hiện có của API:

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

Trong ví dụ này, giấy phép Google-Drive-storage-50GB sẽ bị huỷ chỉ định khỏi người dùng có userId là alex@example.com:

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

Phản hồi thành công sẽ trả về mã trạng thái HTTP 200. Để biết các mã lỗi có thể xảy ra, hãy xem Mã lỗi của API.

Để biết thêm thông tin, hãy xem trang tham khảo về phương thức xoá licenseAssignments.

Mã lỗi

Nếu yêu cầu không thành công, phản hồi sẽ có nội dung giải thích ngắn gọn về lỗi:

Mã lỗi Mô tả
400 Yêu cầu không hợp lệ – Email của người dùng không hợp lệ.
400 Yêu cầu không hợp lệ - SKU/sản phẩm không tồn tại.
401 Actor không có thông tin xác thực để gọi API này.
404 Nếu người dùng không có giấy phép này, phản hồi sẽ có mã lỗi "not found" (không tìm thấy).
412 Chưa đáp ứng được điều kiện tiên quyết. Để biết thông tin chi tiết về lỗi này, hãy xem trường message. Ví dụ:
  • 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 Dịch vụ Trình quản lý giấy phép không hoạt động.