Cập nhật gói thuê bao. Hãy sử dụng phương thức này để cập nhật gói dùng thử 30 ngày hoặc gói thuê bao linh hoạt thành gói thuê bao cam kết hằng năm với phương thức thanh toán hằng tháng hoặc hằng năm.
Cách cập nhật kế hoạch sẽ khác nhau tuỳ thuộc vào kế hoạch và sản phẩm. Để biết thêm thông tin, hãy xem nội dung mô tả trong phần quản lý gói thuê bao.
Yêu cầu HTTP
POST https://reseller.googleapis.com/apps/reseller/v1/customers/{customerId}/subscriptions/{subscriptionId}/changePlan
Đây có thể là tên miền chính của khách hàng hoặc giá trị nhận dạng duy nhất của khách hàng. Nếu tên miền của khách hàng thay đổi, bạn không thể sử dụng tên miền cũ để truy cập vào khách hàng đó, nhưng bạn luôn có thể sử dụng giá trị nhận dạng duy nhất của khách hàng (do API trả về). Bạn nên lưu trữ giá trị nhận dạng duy nhất trong hệ thống của mình (nếu có).
subscriptionId
string
Đây là thuộc tính bắt buộc. subscriptionId là giá trị nhận dạng gói thuê bao và là giá trị duy nhất cho mỗi khách hàng. Vì subscriptionId thay đổi khi gói thuê bao được cập nhật, nên bạn không nên sử dụng mã nhận dạng này làm khoá cho dữ liệu ổn định. Bạn có thể tìm thấy subscriptionId bằng cách sử dụng phương thức truy xuất tất cả gói thuê bao của đại lý.
Xác định tài nguyên là yêu cầu thay đổi gói thuê bao. Giá trị: subscriptions#changePlanRequest
planName
string
Thuộc tính planName là bắt buộc. Đây là tên của gói thanh toán của gói thuê bao. Để biết thêm thông tin về các gói thanh toán của Google, hãy xem phần Khái niệm về API.
Các giá trị có thể có là:
ANNUAL_MONTHLY_PAY – Gói cam kết hằng năm với khoản thanh toán hằng tháng
ANNUAL_YEARLY_PAY – Gói cam kết hằng năm với phương thức thanh toán hằng năm
Đây là thuộc tính bắt buộc. Thuộc tính số lượng ghế là số lượng giấy phép cho mỗi người dùng.
purchaseOrderId
string
Đây là thuộc tính không bắt buộc. Thông tin đơn đặt hàng (PO) này là để người bán lại sử dụng cho mục đích theo dõi mức sử dụng của công ty. Nếu bạn cung cấp giá trị purchaseOrderId, giá trị này sẽ xuất hiện trong phản hồi API và xuất hiện trong hoá đơn. Thuộc tính này chấp nhận tối đa 80 ký tự văn bản thuần tuý.
dealCode
string
Mã do Google phát hành (tối đa 100 ký tự) để giảm giá cho các gói thuê bao. Bạn phải thêm mã ưu đãi vào yêu cầu changePlan để nhận được mức giá chiết khấu. Thuộc tính này là không bắt buộc. Nếu bạn đã thêm mã ưu đãi vào một gói thuê bao, thì bạn có thể để trống thuộc tính này và mức giá chiết khấu hiện tại vẫn sẽ được áp dụng (nếu không để trống, bạn chỉ cần cung cấp mã ưu đãi đã có trên gói thuê bao). Nếu bạn chưa bao giờ thêm mã ưu đãi vào gói thuê bao và để trống thuộc tính này, thì giá thông thường sẽ được áp dụng.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-25 UTC."],[],[],null,["# Method: subscriptions.changePlan\n\n- [HTTP request](#body.HTTP_TEMPLATE)\n- [Path parameters](#body.PATH_PARAMETERS)\n- [Request body](#body.request_body)\n- [Response body](#body.response_body)\n- [Authorization scopes](#body.aspect)\n- [ChangePlanRequest](#ChangePlanRequest)\n - [JSON representation](#ChangePlanRequest.SCHEMA_REPRESENTATION)\n- [Try it!](#try-it)\n\nUpdates a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments.\n\nHow a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).\n\n### HTTP request\n\n`POST https://reseller.googleapis.com/apps/reseller/v1/customers/{customerId}/subscriptions/{subscriptionId}/changePlan`\n\nThe URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.\n\n### Path parameters\n\n| Parameters ||\n|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `customerId` | `string` This can be either the customer's primary domain name or the customer's unique identifier. If the domain name for a customer changes, the old domain name cannot be used to access the customer, but the customer's unique identifier (as returned by the API) can always be used. We recommend storing the unique identifier in your systems where applicable. |\n| `subscriptionId` | `string` This is a required property. The `subscriptionId` is the subscription identifier and is unique for each customer. Since a `subscriptionId` changes when a subscription is updated, we recommend to not use this ID as a key for persistent data. And the `subscriptionId` can be found using the [retrieve all reseller subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. |\n\n### Request body\n\nThe request body contains an instance of [ChangePlanRequest](/workspace/admin/reseller/reference/rest/v1/subscriptions/changePlan#ChangePlanRequest).\n\n### Response body\n\nIf successful, the response body contains an instance of [Subscription](/workspace/admin/reseller/reference/rest/v1/subscriptions#Subscription).\n\n### Authorization scopes\n\nRequires the following OAuth scope:\n\n- `https://www.googleapis.com/auth/apps.order`\n\nFor more information, see the [Authorization guide](/workspace/guides/configure-oauth-consent).\n\nChangePlanRequest\n-----------------\n\nJSON template for the subscriptions.changePlan rpc request.\n\n| JSON representation |\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ``` { \"kind\": string, \"planName\": string, \"seats\": { object (/workspace/admin/reseller/reference/rest/v1/subscriptions#Seats) }, \"purchaseOrderId\": string, \"dealCode\": string } ``` |\n\n| Fields ||\n|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `kind` | `string` Identifies the resource as a subscription change plan request. Value: `subscriptions#changePlanRequest` |\n| `planName` | `string` The `planName` property is required. This is the name of the subscription's payment plan. For more information about the Google payment plans, see [API concepts](https://developers.google.com/workspace/admin/reseller/v1/how-tos/concepts.html). Possible values are: - `ANNUAL_MONTHLY_PAY` - The annual commitment plan with monthly payments **Caution:** `ANNUAL_MONTHLY_PAY` is returned as `ANNUAL` in all API responses. - `ANNUAL_YEARLY_PAY` - The annual commitment plan with yearly payments - `FLEXIBLE` - The flexible plan - `TRIAL` - The 30-day free trial plan \u003cbr /\u003e |\n| `seats` | `object (`[Seats](/workspace/admin/reseller/reference/rest/v1/subscriptions#Seats)`)` This is a required property. The seats property is the number of user seat licenses. |\n| `purchaseOrderId` | `string` This is an optional property. This purchase order (PO) information is for resellers to use for their company tracking usage. If a `purchaseOrderId` value is given it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters. |\n| `dealCode` | `string` Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `changePlan` request in order to receive discounted rate. This property is optional. If a deal code has already been added to a subscription, this property may be left empty and the existing discounted rate will still apply (if not empty, only provide the deal code that is already present on the subscription). If a deal code has never been added to a subscription and this property is left blank, regular pricing will apply. |"]]