<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="reseller_v1.html">Google Workspace Reseller API</a> . <a href="reseller_v1.subscriptions.html">subscriptions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#activate">activate(customerId, subscriptionId, x__xgafv=None)</a></code></p>
<p class="firstline">Activates a subscription previously suspended by the reseller. If you did not suspend the customer subscription and it is suspended for any other reason, such as for abuse or a pending ToS acceptance, this call will not reactivate the customer subscription.</p>
<p class="toc_element">
  <code><a href="#changePlan">changePlan(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates 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. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).</p>
<p class="toc_element">
  <code><a href="#changeRenewalSettings">changeRenewalSettings(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a user license's renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).</p>
<p class="toc_element">
  <code><a href="#changeSeats">changeSeats(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a subscription's user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(customerId, subscriptionId, deletionType, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels, suspends, or transfers a subscription to direct.</p>
<p class="toc_element">
  <code><a href="#get">get(customerId, subscriptionId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).</p>
<p class="toc_element">
  <code><a href="#insert">insert(customerId, body=None, customerAuthToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates or transfer a subscription. Create a subscription for a customer's account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer's account using the customer insert method, use the customer's `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).</p>
<p class="toc_element">
  <code><a href="#list">list(customerAuthToken=None, customerId=None, customerNamePrefix=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer's subscriptions, or all of a customer's transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#startPaidService">startPaidService(customerId, subscriptionId, x__xgafv=None)</a></code></p>
<p class="firstline">Immediately move a 30-day free trial subscription to a paid service subscription. This method is only applicable if a payment plan has already been set up for the 30-day trial subscription. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#paid_service).</p>
<p class="toc_element">
  <code><a href="#suspend">suspend(customerId, subscriptionId, x__xgafv=None)</a></code></p>
<p class="firstline">Suspends an active subscription. You can use this method to suspend a paid subscription that is currently in the `ACTIVE` state. * For `FLEXIBLE` subscriptions, billing is paused. * For `ANNUAL_MONTHLY_PAY` or `ANNUAL_YEARLY_PAY` subscriptions: * Suspending the subscription does not change the renewal date that was originally committed to. * A suspended subscription does not renew. If you activate the subscription after the original renewal date, a new annual subscription will be created, starting on the day of activation. We strongly encourage you to suspend subscriptions only for short periods of time as suspensions over 60 days may result in the subscription being cancelled.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(customerId, subscriptionId, x__xgafv=None)</code>
  <pre>Activates a subscription previously suspended by the reseller. If you did not suspend the customer subscription and it is suspended for any other reason, such as for abuse or a pending ToS acceptance, this call will not reactivate the customer subscription.

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="changePlan">changePlan(customerId, subscriptionId, body=None, x__xgafv=None)</code>
  <pre>Updates 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. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for the ChangePlan rpc request.
  &quot;dealCode&quot;: &quot;A String&quot;, # 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.
  &quot;kind&quot;: &quot;subscriptions#changePlanRequest&quot;, # Identifies the resource as a subscription change plan request. Value: `subscriptions#changePlanRequest`
  &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s payment plan. For more information about the Google payment plans, see API concepts. 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
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The seats property is the number of user seat licenses.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="changeRenewalSettings">changeRenewalSettings(customerId, subscriptionId, body=None, x__xgafv=None)</code>
  <pre>Updates a user license&#x27;s renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for a subscription renewal settings.
  &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
  &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="changeSeats">changeSeats(customerId, subscriptionId, body=None, x__xgafv=None)</code>
  <pre>Updates a subscription&#x27;s user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for subscription seats.
  &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
  &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
  &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
  &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(customerId, subscriptionId, deletionType, x__xgafv=None)</code>
  <pre>Cancels, suspends, or transfers a subscription to direct.

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  deletionType: string, The `deletionType` query string enables the cancellation, downgrade, or suspension of a subscription. (required)
    Allowed values
      deletion_type_undefined - 
      cancel - Cancels the subscription immediately. This does not apply to a G Suite subscription.
      transfer_to_direct - Transfers a subscription directly to Google. The customer is immediately transferred to a direct billing relationship with Google and is given a short amount of time with no service interruption. The customer can then choose to set up billing directly with Google by using a credit card, or they can transfer to another reseller.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(customerId, subscriptionId, x__xgafv=None)</code>
  <pre>Gets a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(customerId, body=None, customerAuthToken=None, x__xgafv=None)</code>
  <pre>Creates or transfer a subscription. Create a subscription for a customer&#x27;s account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer&#x27;s account using the customer insert method, use the customer&#x27;s `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}

  customerAuthToken: string, The `customerAuthToken` query string is required when creating a resold account that transfers a direct customer&#x27;s subscription or transfers another reseller customer&#x27;s subscription to your reseller management. This is a hexadecimal authentication token needed to complete the subscription transfer. For more information, see the administrator help center.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(customerAuthToken=None, customerId=None, customerNamePrefix=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer&#x27;s subscriptions, or all of a customer&#x27;s transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).

Args:
  customerAuthToken: string, The `customerAuthToken` query string is required when creating a resold account that transfers a direct customer&#x27;s subscription or transfers another reseller customer&#x27;s subscription to your reseller management. This is a hexadecimal authentication token needed to complete the subscription transfer. For more information, see the administrator help center.
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates.
  customerNamePrefix: string, When retrieving all of your subscriptions and filtering for specific customers, you can enter a prefix for a customer name. Using an example customer group that includes `exam.com`, `example20.com` and `example.com`: - `exa` -- Returns all customer names that start with &#x27;exa&#x27; which could include `exam.com`, `example20.com`, and `example.com`. A name prefix is similar to using a regular expression&#x27;s asterisk, exa*. - `example` -- Returns `example20.com` and `example.com`. 
  maxResults: integer, When retrieving a large list, the `maxResults` is the maximum number of results per page. The `nextPageToken` value takes you to the next page. The default is 20.
  pageToken: string, Token to specify next page in the list
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A subscription manages the relationship of a Google customer&#x27;s payment plan with a product&#x27;s SKU, user licenses, 30-day free trial status, and renewal options. A primary role of a reseller is to manage the Google customer&#x27;s subscriptions.
  &quot;kind&quot;: &quot;reseller#subscriptions&quot;, # Identifies the resource as a collection of subscriptions. Value: reseller#subscriptions
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
  &quot;subscriptions&quot;: [ # The subscriptions in this page of results.
    { # JSON template for a subscription.
      &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
      &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
      &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
      &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
      &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
      &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
      &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
        &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
          &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
          &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
        },
        &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
        &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
      },
      &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
      &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
        &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
        &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
      },
      &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
      &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
        &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
        &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
        &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
        &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
      },
      &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
      &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
      &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
      &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
      &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
        &quot;A String&quot;,
      ],
      &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
        &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
        &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
        &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
      },
      &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
        &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
        &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="startPaidService">startPaidService(customerId, subscriptionId, x__xgafv=None)</code>
  <pre>Immediately move a 30-day free trial subscription to a paid service subscription. This method is only applicable if a payment plan has already been set up for the 30-day trial subscription. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#paid_service).

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="suspend">suspend(customerId, subscriptionId, x__xgafv=None)</code>
  <pre>Suspends an active subscription. You can use this method to suspend a paid subscription that is currently in the `ACTIVE` state. * For `FLEXIBLE` subscriptions, billing is paused. * For `ANNUAL_MONTHLY_PAY` or `ANNUAL_YEARLY_PAY` subscriptions: * Suspending the subscription does not change the renewal date that was originally committed to. * A suspended subscription does not renew. If you activate the subscription after the original renewal date, a new annual subscription will be created, starting on the day of activation. We strongly encourage you to suspend subscriptions only for short periods of time as suspensions over 60 days may result in the subscription being cancelled.

Args:
  customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
  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 method. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # JSON template for a subscription.
  &quot;billingMethod&quot;: &quot;A String&quot;, # Read-only field that returns the current billing method for a subscription.
  &quot;creationTime&quot;: &quot;A String&quot;, # The `creationTime` property is the date when subscription was created. It is in milliseconds using the Epoch format. See an example Epoch converter.
  &quot;customerDomain&quot;: &quot;A String&quot;, # Primary domain name of the customer
  &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
  &quot;dealCode&quot;: &quot;A String&quot;, # Google-issued code (100 char max) for discounted pricing on subscription plans. Deal code must be included in `insert` requests in order to receive discounted rate. This property is optional, regular pricing applies if left empty.
  &quot;kind&quot;: &quot;reseller#subscription&quot;, # Identifies the resource as a Subscription. Value: `reseller#subscription`
  &quot;plan&quot;: { # The `plan` property is required. In this version of the API, the G Suite plans are the flexible plan, annual commitment plan, and the 30-day free trial plan. For more information about the API&quot;s payment plans, see the API concepts.
    &quot;commitmentInterval&quot;: { # In this version of the API, annual commitment plan&#x27;s interval is one year. *Note: *When `billingMethod` value is `OFFLINE`, the subscription property object `plan.commitmentInterval` is omitted in all API responses.
      &quot;endTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `endTime` in milliseconds using the UNIX Epoch format. See an example Epoch converter.
      &quot;startTime&quot;: &quot;A String&quot;, # An annual commitment plan&#x27;s interval&#x27;s `startTime` in milliseconds using UNIX Epoch format. See an example Epoch converter.
    },
    &quot;isCommitmentPlan&quot;: True or False, # The `isCommitmentPlan` property&#x27;s boolean value identifies the plan as an annual commitment plan: - `true` — The subscription&#x27;s plan is an annual commitment plan. - `false` — The plan is not an annual commitment plan.
    &quot;planName&quot;: &quot;A String&quot;, # The `planName` property is required. This is the name of the subscription&#x27;s plan. For more information about the Google payment plans, see the API concepts. 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. A subscription in trial will be suspended after the 30th free day if no payment plan is assigned. Calling `changePlan` will assign a payment plan to a trial but will not activate the plan. A trial will automatically begin its assigned payment plan after its 30th free day or immediately after calling `startPaidService`. - `FREE` — The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
  },
  &quot;purchaseOrderId&quot;: &quot;A String&quot;, # 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.
  &quot;renewalSettings&quot;: { # JSON template for a subscription renewal settings. # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center.
    &quot;kind&quot;: &quot;subscriptions#renewalSettings&quot;, # Identifies the resource as a subscription renewal setting. Value: `subscriptions#renewalSettings`
    &quot;renewalType&quot;: &quot;A String&quot;, # Renewal settings for the annual commitment plan. For more detailed information, see renewal options in the administrator help center. When renewing a subscription, the `renewalType` is a required property.
  },
  &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Subscriptions page in the Admin console. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task using the Subscriptions page in the Admin console.
  &quot;seats&quot;: { # JSON template for subscription seats. # This is a required property. The number and limit of user seat licenses in the plan.
    &quot;kind&quot;: &quot;subscriptions#seats&quot;, # Identifies the resource as a subscription seat setting. Value: `subscriptions#seats`
    &quot;licensedNumberOfSeats&quot;: 42, # Read-only field containing the current number of users that are assigned a license for the product defined in `skuId`. This field&#x27;s value is equivalent to the numerical count of users returned by the Enterprise License Manager API method: [`listForProductAndSku`](/admin-sdk/licensing/v1/reference/licenseAssignments/listForProductAndSku).
    &quot;maximumNumberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `FLEXIBLE` or `TRIAL` plans. This property sets the maximum number of licensed users allowed on a subscription. This quantity can be increased up to the maximum limit defined in the reseller&#x27;s contract. The minimum quantity is the current number of users in the customer account. *Note: *G Suite subscriptions automatically assign a license to every user.
    &quot;numberOfSeats&quot;: 42, # This is a required property and is exclusive to subscriptions with `ANNUAL_MONTHLY_PAY` and `ANNUAL_YEARLY_PAY` plans. This property sets the maximum number of licenses assignable to users on a subscription. The reseller can add more licenses, but once set, the `numberOfSeats` cannot be reduced until renewal. The reseller is invoiced based on the `numberOfSeats` value regardless of how many of these user licenses are assigned. *Note: *Google Workspace subscriptions automatically assign a license to every user.
  },
  &quot;skuId&quot;: &quot;A String&quot;, # A required property. The `skuId` is a unique system identifier for a product&#x27;s SKU assigned to a customer in the subscription. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;skuName&quot;: &quot;A String&quot;, # Read-only external display name for a product&#x27;s SKU assigned to a customer in the subscription. SKU names are subject to change at Google&#x27;s discretion. For products and SKUs available in this version of the API, see Product and SKU IDs.
  &quot;status&quot;: &quot;A String&quot;, # This is an optional property.
  &quot;subscriptionId&quot;: &quot;A String&quot;, # The `subscriptionId` is the subscription identifier and is unique for each customer. This is a required property. Since a `subscriptionId` changes when a subscription is updated, we recommend not using this ID as a key for persistent data. Use the `subscriptionId` as described in retrieve all reseller subscriptions.
  &quot;suspensionReasons&quot;: [ # Read-only field containing an enumerable of all the current suspension reasons for a subscription. It is possible for a subscription to have many concurrent, overlapping suspension reasons. A subscription&#x27;s `STATUS` is `SUSPENDED` until all pending suspensions are removed. Possible options include: - `PENDING_TOS_ACCEPTANCE` - The customer has not logged in and accepted the G Suite Resold Terms of Services. - `RENEWAL_WITH_TYPE_CANCEL` - The customer&#x27;s commitment ended and their service was cancelled at the end of their term. - `RESELLER_INITIATED` - A manual suspension invoked by a Reseller. - `TRIAL_ENDED` - The customer&#x27;s trial expired without a plan selected. - `OTHER` - The customer is suspended for an internal Google reason (e.g. abuse or otherwise).
    &quot;A String&quot;,
  ],
  &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
    &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
    &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
  },
  &quot;trialSettings&quot;: { # The G Suite annual commitment and flexible payment plans can be in a 30-day free trial. For more information, see the API concepts.
    &quot;isInTrial&quot;: True or False, # Determines if a subscription&#x27;s plan is in a 30-day free trial or not: - `true` — The plan is in trial. - `false` — The plan is not in trial.
    &quot;trialEndTime&quot;: &quot;A String&quot;, # Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example Epoch converter.
  },
}</pre>
</div>

</body></html>