<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="androidpublisher_v3.html">Google Play Android Developer API</a> . <a href="androidpublisher_v3.purchases.html">purchases</a> . <a href="androidpublisher_v3.purchases.subscriptions.html">subscriptions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#acknowledge">acknowledge(packageName, subscriptionId, token, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Acknowledges a subscription purchase.</p>
<p class="toc_element">
  <code><a href="#cancel">cancel(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a user's subscription purchase. The subscription remains valid until its expiration time.</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="#defer">defer(packageName, subscriptionId, token, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Defers a user's subscription purchase until a specified future expiration time.</p>
<p class="toc_element">
  <code><a href="#get">get(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Checks whether a user's subscription purchase is valid and returns its expiry time.</p>
<p class="toc_element">
  <code><a href="#refund">refund(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.</p>
<p class="toc_element">
  <code><a href="#revoke">revoke(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="acknowledge">acknowledge(packageName, subscriptionId, token, body=None, x__xgafv=None)</code>
  <pre>Acknowledges a subscription purchase.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the purchases.subscriptions.acknowledge API.
    &quot;developerPayload&quot;: &quot;A String&quot;, # Payload to attach to the purchase.
  }

  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="cancel">cancel(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Cancels a user&#x27;s subscription purchase. The subscription remains valid until its expiration time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="defer">defer(packageName, subscriptionId, token, body=None, x__xgafv=None)</code>
  <pre>Defers a user&#x27;s subscription purchase until a specified future expiration time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the purchases.subscriptions.defer API.
    &quot;deferralInfo&quot;: { # A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time. # The information about the new desired expiry time for the subscription.
      &quot;expectedExpiryTimeMillis&quot;: &quot;A String&quot;, # The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.
      &quot;desiredExpiryTimeMillis&quot;: &quot;A String&quot;, # The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The given time must be later/greater than the current expiry time for the subscription.
    },
  }

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

Returns:
  An object of the form:

    { # Response for the purchases.subscriptions.defer API.
    &quot;newExpiryTimeMillis&quot;: &quot;A String&quot;, # The new expiry time for the subscription in milliseconds since the Epoch.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Checks whether a user&#x27;s subscription purchase is valid and returns its expiry time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A SubscriptionPurchase resource indicates the status of a user&#x27;s subscription purchase.
    &quot;kind&quot;: &quot;A String&quot;, # This kind represents a subscriptionPurchase object in the androidpublisher service.
    &quot;cancelReason&quot;: 42, # The reason why a subscription was canceled or is not auto-renewing. Possible values are: 0. User canceled the subscription 1. Subscription was canceled by the system, for example because of a billing problem 2. Subscription was replaced with a new subscription 3. Subscription was canceled by the developer
    &quot;paymentState&quot;: 42, # The payment state of the subscription. Possible values are: 0. Payment pending 1. Payment received 2. Free trial 3. Pending deferred upgrade/downgrade Not present for canceled, expired subscriptions.
    &quot;userCancellationTimeMillis&quot;: &quot;A String&quot;, # The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only present if cancelReason is 0.
    &quot;autoResumeTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription will be automatically resumed, in milliseconds since the Epoch. Only present if the user has requested to pause the subscription.
    &quot;priceChange&quot;: { # Contains the price change information for a subscription that can be used to control the user journey for the price change in the app. This can be in the form of seeking confirmation from the user or tailoring the experience for a successful conversion. # The latest price change information available. This is present only when there is an upcoming price change for the subscription yet to be applied. Once the subscription renews with the new price or the subscription is canceled, no price change information will be returned.
      &quot;newPrice&quot;: { # Definition of a price, i.e. currency and units. # The new price the subscription will renew with if the price change is accepted by the user.
        &quot;currency&quot;: &quot;A String&quot;, # 3 letter Currency code, as defined by ISO 4217. See java/com/google/common/money/CurrencyCode.java
        &quot;priceMicros&quot;: &quot;A String&quot;, # Price in 1/million of the currency base unit, represented as a string.
      },
      &quot;state&quot;: 42, # The current state of the price change. Possible values are: 0. Outstanding: State for a pending price change waiting for the user to agree. In this state, you can optionally seek confirmation from the user using the In-App API. 1. Accepted: State for an accepted price change that the subscription will renew with unless it&#x27;s canceled. The price change takes effect on a future date when the subscription renews. Note that the change might not occur when the subscription is renewed next.
    },
    &quot;expiryTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription will expire, in milliseconds since the Epoch.
    &quot;linkedPurchaseToken&quot;: &quot;A String&quot;, # The purchase token of the originating purchase if this subscription is one of the following: 0. Re-signup of a canceled but non-lapsed subscription 1. Upgrade/downgrade from a previous subscription For example, suppose a user originally signs up and you receive purchase token X, then the user cancels and goes through the resignup flow (before their subscription lapses) and you receive purchase token Y, and finally the user upgrades their subscription and you receive purchase token Z. If you call this API with purchase token Z, this field will be set to Y. If you call this API with purchase token Y, this field will be set to X. If you call this API with purchase token X, this field will not be set.
    &quot;priceAmountMicros&quot;: &quot;A String&quot;, # Price of the subscription, not including tax. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.
    &quot;cancelSurveyResult&quot;: { # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey). # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
      &quot;userInputCancelReason&quot;: &quot;A String&quot;, # The customized input cancel reason from the user. Only present when cancelReason is 0.
      &quot;cancelSurveyReason&quot;: 42, # The cancellation reason the user chose in the survey. Possible values are: 0. Other 1. I don&#x27;t use this service enough 2. Technical issues 3. Cost-related reasons 4. I found a better app
    },
    &quot;introductoryPriceInfo&quot;: { # Contains the introductory price information for a subscription. # Introductory price information of the subscription. This is only present when the subscription was purchased with an introductory price. This field does not indicate the subscription is currently in introductory price period.
      &quot;introductoryPriceCycles&quot;: 42, # The number of billing period to offer introductory pricing.
      &quot;introductoryPricePeriod&quot;: &quot;A String&quot;, # Introductory price period, specified in ISO 8601 format. Common values are (but not limited to) &quot;P1W&quot; (one week), &quot;P1M&quot; (one month), &quot;P3M&quot; (three months), &quot;P6M&quot; (six months), and &quot;P1Y&quot; (one year).
      &quot;introductoryPriceCurrencyCode&quot;: &quot;A String&quot;, # ISO 4217 currency code for the introductory subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is &quot;GBP&quot;.
      &quot;introductoryPriceAmountMicros&quot;: &quot;A String&quot;, # Introductory price of the subscription, not including tax. The currency is the same as price_currency_code. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.
    },
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
    &quot;developerPayload&quot;: &quot;A String&quot;, # A developer-specified string that contains supplemental information about an order.
    &quot;orderId&quot;: &quot;A String&quot;, # The order id of the latest recurring order associated with the purchase of the subscription.
    &quot;startTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription was granted, in milliseconds since the Epoch.
    &quot;priceCurrencyCode&quot;: &quot;A String&quot;, # ISO 4217 currency code for the subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is &quot;GBP&quot;.
    &quot;givenName&quot;: &quot;A String&quot;, # The given name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
    &quot;autoRenewing&quot;: True or False, # Whether the subscription will automatically be renewed when it reaches its current expiry time.
    &quot;acknowledgementState&quot;: 42, # The acknowledgement state of the subscription product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged
    &quot;countryCode&quot;: &quot;A String&quot;, # ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was granted.
    &quot;obfuscatedExternalProfileId&quot;: &quot;A String&quot;, # An obfuscated version of the id that is uniquely associated with the user&#x27;s profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
    &quot;purchaseType&quot;: 42, # The type of purchase of the subscription. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code)
    &quot;profileId&quot;: &quot;A String&quot;, # The Google profile id of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
    &quot;promotionCode&quot;: &quot;A String&quot;, # The promotion code applied on this purchase. This field is only set if a vanity code promotion is applied when the subscription was purchased.
    &quot;obfuscatedExternalAccountId&quot;: &quot;A String&quot;, # An obfuscated version of the id that is uniquely associated with the user&#x27;s account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
    &quot;externalAccountId&quot;: &quot;A String&quot;, # User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.
    &quot;promotionType&quot;: 42, # The type of promotion applied on this purchase. This field is only set if a promotion is applied when the subscription was purchased. Possible values are: 0. One time code 1. Vanity code
    &quot;familyName&quot;: &quot;A String&quot;, # The family name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
    &quot;profileName&quot;: &quot;A String&quot;, # The profile name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  }</pre>
</div>

<div class="method">
    <code class="details" id="refund">refund(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Refunds a user&#x27;s subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, &quot;The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  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="revoke">revoke(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Refunds and immediately revokes a user&#x27;s subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

</body></html>