<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">Enterprise Apps 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</p>
<p class="toc_element">
  <code><a href="#changePlan">changePlan(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update 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.</p>
<p class="toc_element">
  <code><a href="#changeRenewalSettings">changeRenewalSettings(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a user license's renewal settings. This is applicable for accounts with annual commitment plans only.</p>
<p class="toc_element">
  <code><a href="#changeSeats">changeSeats(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a subscription's user license settings.</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">Cancel, suspend, or transfer 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">Get a specific 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">Create or 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">List 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.</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.</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.</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

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
    &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: *G Suite 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;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>Update 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.

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
    &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: *G Suite 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
    &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: *G Suite 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;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>Update a user license&#x27;s renewal settings. This is applicable for accounts with annual commitment plans only.

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
    &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: *G Suite 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;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>Update a subscription&#x27;s user license settings.

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
  &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: *G Suite 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
    &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: *G Suite 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;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>Cancel, suspend, or transfer 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
      deletionTypeUndefined - 
      cancel - Cancels the subscription immediately. This does not apply to a G Suite subscription.
      transferToDirect - 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>Get a specific 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
    &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: *G Suite 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;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>Create or 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
    &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: *G Suite 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;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
    &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: *G Suite 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;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>List 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.

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:

    { # JSON template for a subscription list.
  &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
        &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: *G Suite 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;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.

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
    &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: *G Suite 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;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.

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
    &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: *G Suite 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;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>