<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.monetization.html">monetization</a> . <a href="androidpublisher_v3.monetization.subscriptions.html">subscriptions</a> . <a href="androidpublisher_v3.monetization.subscriptions.basePlans.html">basePlans</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="androidpublisher_v3.monetization.subscriptions.basePlans.offers.html">offers()</a></code>
</p>
<p class="firstline">Returns the offers Resource.</p>

<p class="toc_element">
  <code><a href="#activate">activate(packageName, productId, basePlanId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activates a base plan. Once activated, base plans will be available to new subscribers.</p>
<p class="toc_element">
  <code><a href="#batchMigratePrices">batchMigratePrices(packageName, productId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Batch variant of the MigrateBasePlanPrices endpoint. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput.</p>
<p class="toc_element">
  <code><a href="#batchUpdateStates">batchUpdateStates(packageName, productId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activates or deactivates base plans across one or multiple subscriptions. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput.</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="#deactivate">deactivate(packageName, productId, basePlanId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription</p>
<p class="toc_element">
  <code><a href="#delete">delete(packageName, productId, basePlanId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a base plan. Can only be done for draft base plans. This action is irreversible.</p>
<p class="toc_element">
  <code><a href="#migratePrices">migratePrices(packageName, productId, basePlanId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Migrates subscribers from one or more legacy price cohorts to the current price. Requests result in Google Play notifying affected subscribers. Only up to 250 simultaneous legacy price cohorts are supported.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(packageName, productId, basePlanId, body=None, x__xgafv=None)</code>
  <pre>Activates a base plan. Once activated, base plans will be available to new subscribers.

Args:
  packageName: string, Required. The parent app (package name) of the base plan to activate. (required)
  productId: string, Required. The parent subscription (ID) of the base plan to activate. (required)
  basePlanId: string, Required. The unique base plan ID of the base plan to activate. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for ActivateBasePlan.
  &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to activate.
  &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
  &quot;packageName&quot;: &quot;A String&quot;, # Required. The parent app (package name) of the base plan to activate.
  &quot;productId&quot;: &quot;A String&quot;, # Required. The parent subscription (ID) of the base plan to activate.
}

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

Returns:
  An object of the form:

    { # A single subscription for an app.
  &quot;archived&quot;: True or False, # Output only. Deprecated: subscription archiving is not supported.
  &quot;basePlans&quot;: [ # The set of base plans for this subscription. Represents the prices and duration of the subscription if no other offers apply.
    { # A single base plan for a subscription.
      &quot;autoRenewingBasePlanType&quot;: { # Represents a base plan that automatically renews at the end of its subscription period. # Set when the base plan automatically renews at a regular interval.
        &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;legacyCompatible&quot;: True or False, # Whether the renewing base plan is backward compatible. The backward compatible base plan is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one renewing base plan can be marked as legacy compatible for a given subscription.
        &quot;legacyCompatibleSubscriptionOfferId&quot;: &quot;A String&quot;, # Subscription offer id which is legacy compatible. The backward compatible subscription offer is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one subscription offer can be marked as legacy compatible for a given renewing base plan. To have no Subscription offer as legacy compatible set this field as empty string.
        &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
        &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
      },
      &quot;basePlanId&quot;: &quot;A String&quot;, # Required. Immutable. The unique identifier of this base plan. Must be unique within the subscription, and conform with RFC-1034. That is, this ID can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 63 characters.
      &quot;installmentsBasePlanType&quot;: { # Represents an installments base plan where a user commits to a specified number of payments. # Set for installments base plans where a user is committed to a specified number of payments.
        &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;committedPaymentsCount&quot;: 42, # Required. Immutable. The number of payments the user is committed to. It is immutable after the base plan is created.
        &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
        &quot;renewalType&quot;: &quot;A String&quot;, # Required. Immutable. Installments base plan renewal type. Determines the behavior at the end of the initial commitment. The renewal type is immutable after the base plan is created.
        &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
      },
      &quot;offerTags&quot;: [ # List of up to 20 custom tags specified for this base plan, and returned to the app through the billing library. Subscription offers for this base plan will also receive these offer tags in the billing library.
        { # Represents a custom tag specified for a product offer.
          &quot;tag&quot;: &quot;A String&quot;, # Must conform with RFC-1034. That is, this string can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 20 characters.
        },
      ],
      &quot;otherRegionsConfig&quot;: { # Pricing information for any new locations Play may launch in. # Pricing information for any new locations Play may launch in the future. If omitted, the BasePlan will not be automatically available any new locations Play may launch in the future.
        &quot;eurPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in EUR to use for any new locations Play may launch in.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan is available for new subscribers in any new locations Play may launch in. If not specified, this will default to false.
        &quot;usdPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in USD to use for any new locations Play may launch in.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
      },
      &quot;prepaidBasePlanType&quot;: { # Represents a base plan that does not automatically renew at the end of the base plan, and must be manually renewed by the user. # Set when the base plan does not automatically renew at the end of the billing period.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;timeExtension&quot;: &quot;A String&quot;, # Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME_EXTENSION_ACTIVE if not specified.
      },
      &quot;regionalConfigs&quot;: [ # Region-specific information for this base plan.
        { # Configuration for a base plan specific to a region.
          &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan in the specified region is available for new subscribers. Existing subscribers will not have their subscription canceled if this value is set to false. If not specified, this will default to false.
          &quot;price&quot;: { # Represents an amount of money with its currency type. # The price of the base plan in the specified region. Must be set if the base plan is available to new subscribers. Must be set in the currency that is linked to the specified region.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. &quot;US&quot;.
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the base plan, i.e. whether it&#x27;s active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.
    },
  ],
  &quot;listings&quot;: [ # Required. List of localized listings for this subscription. Must contain at least an entry for the default language of the parent app.
    { # The consumer-visible metadata of a subscription.
      &quot;benefits&quot;: [ # A list of benefits shown to the user on platforms such as the Play Store and in restoration flows in the language of this listing. Plain text. Ordered list of at most four benefits.
        &quot;A String&quot;,
      ],
      &quot;description&quot;: &quot;A String&quot;, # The description of this subscription in the language of this listing. Maximum length - 80 characters. Plain text.
      &quot;languageCode&quot;: &quot;A String&quot;, # Required. The language of this listing, as defined by BCP-47, e.g. &quot;en-US&quot;.
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of this subscription in the language of this listing. Plain text.
    },
  ],
  &quot;packageName&quot;: &quot;A String&quot;, # Immutable. Package name of the parent app.
  &quot;productId&quot;: &quot;A String&quot;, # Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.
  &quot;restrictedPaymentCountries&quot;: { # Countries where the purchase of this product is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed. # Optional. Countries where the purchase of this subscription is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed.
    &quot;regionCodes&quot;: [ # Required. Region codes to impose payment restrictions on, as defined by ISO 3166-2, e.g. &quot;US&quot;.
      &quot;A String&quot;,
    ],
  },
  &quot;taxAndComplianceSettings&quot;: { # Details about taxation, Google Play policy, and legal compliance for subscription products. # Details about taxes and legal compliance.
    &quot;eeaWithdrawalRightType&quot;: &quot;A String&quot;, # Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the [Help Center article](https://support.google.com/googleplay/android-developer/answer/10463498) for more information.
    &quot;isTokenizedDigitalAsset&quot;: True or False, # Whether this subscription is declared as a product representing a tokenized digital asset.
    &quot;taxRateInfoByRegionCode&quot;: { # A mapping from region code to tax rate details. The keys are region codes as defined by Unicode&#x27;s &quot;CLDR&quot;.
      &quot;a_key&quot;: { # Specified details about taxation in a given geographical region.
        &quot;eligibleForStreamingServiceTaxRate&quot;: True or False, # You must tell us if your app contains streaming products to correctly charge US state and local sales tax. Field only supported in the United States.
        &quot;streamingTaxType&quot;: &quot;A String&quot;, # To collect communications or amusement taxes in the United States, choose the appropriate tax category. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax).
        &quot;taxTier&quot;: &quot;A String&quot;, # Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498).
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="batchMigratePrices">batchMigratePrices(packageName, productId, body=None, x__xgafv=None)</code>
  <pre>Batch variant of the MigrateBasePlanPrices endpoint. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput.

Args:
  packageName: string, Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the Subscription resources. (required)
  productId: string, Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this batch update spans multiple subscriptions, set this field to &quot;-&quot;. Must be set. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchMigrateBasePlanPrices.
  &quot;requests&quot;: [ # Required. Up to 100 price migration requests. All requests must update different base plans.
    { # Request message for MigrateBasePlanPrices.
      &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to update prices on.
      &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
      &quot;packageName&quot;: &quot;A String&quot;, # Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.
      &quot;productId&quot;: &quot;A String&quot;, # Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.
      &quot;regionalPriceMigrations&quot;: [ # Required. The regional prices to update.
        { # Configuration for migration of a legacy price cohort.
          &quot;oldestAllowedPriceVersionTime&quot;: &quot;A String&quot;, # Required. Subscribers in all legacy price cohorts before this time will be migrated to the current price. Subscribers in any newer price cohorts are unaffected. Affected subscribers will receive one or more notifications from Google Play about the price change. Price decreases occur at the subscriber&#x27;s next billing date. Price increases occur at the subscriber&#x27;s next billing date following a notification period that varies by region and price increase type.
          &quot;priceIncreaseType&quot;: &quot;A String&quot;, # Optional. The requested type of price increase
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. &quot;US&quot;.
        },
      ],
      &quot;regionsVersion&quot;: { # The version of the available regions being used for the specified resource. # Required. The version of the available regions being used for the regional_price_migrations.
        &quot;version&quot;: &quot;A String&quot;, # Required. A string representing the version of available regions being used for the specified resource. Regional prices and latest supported version for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region&#x27;s version and set of regional prices and currencies will succeed even though a new version is available.
      },
    },
  ],
}

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

Returns:
  An object of the form:

    { # Response message for BatchMigrateBasePlanPrices.
  &quot;responses&quot;: [ # Contains one response per requested price migration, in the same order as the request.
    { # Response message for MigrateBasePlanPrices.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdateStates">batchUpdateStates(packageName, productId, body=None, x__xgafv=None)</code>
  <pre>Activates or deactivates base plans across one or multiple subscriptions. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput.

Args:
  packageName: string, Required. The parent app (package name) of the updated base plans. (required)
  productId: string, Required. The product ID of the parent subscription, if all updated base plans belong to the same subscription. If this batch update spans multiple subscriptions, set this field to &quot;-&quot;. Must be set. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchUpdateBasePlanStates.
  &quot;requests&quot;: [ # Required. The update request list of up to 100 elements. All requests must update different base plans.
    { # Request message to update the state of a subscription base plan.
      &quot;activateBasePlanRequest&quot;: { # Request message for ActivateBasePlan. # Activates a base plan. Once activated, base plans will be available to new subscribers.
        &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to activate.
        &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
        &quot;packageName&quot;: &quot;A String&quot;, # Required. The parent app (package name) of the base plan to activate.
        &quot;productId&quot;: &quot;A String&quot;, # Required. The parent subscription (ID) of the base plan to activate.
      },
      &quot;deactivateBasePlanRequest&quot;: { # Request message for DeactivateBasePlan. # Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription
        &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to deactivate.
        &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
        &quot;packageName&quot;: &quot;A String&quot;, # Required. The parent app (package name) of the base plan to deactivate.
        &quot;productId&quot;: &quot;A String&quot;, # Required. The parent subscription (ID) of the base plan to deactivate.
      },
    },
  ],
}

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

Returns:
  An object of the form:

    { # Response message for BatchUpdateBasePlanStates.
  &quot;subscriptions&quot;: [ # The list of updated subscriptions. This list will match the requests one to one, in the same order.
    { # A single subscription for an app.
      &quot;archived&quot;: True or False, # Output only. Deprecated: subscription archiving is not supported.
      &quot;basePlans&quot;: [ # The set of base plans for this subscription. Represents the prices and duration of the subscription if no other offers apply.
        { # A single base plan for a subscription.
          &quot;autoRenewingBasePlanType&quot;: { # Represents a base plan that automatically renews at the end of its subscription period. # Set when the base plan automatically renews at a regular interval.
            &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
            &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
            &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
            &quot;legacyCompatible&quot;: True or False, # Whether the renewing base plan is backward compatible. The backward compatible base plan is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one renewing base plan can be marked as legacy compatible for a given subscription.
            &quot;legacyCompatibleSubscriptionOfferId&quot;: &quot;A String&quot;, # Subscription offer id which is legacy compatible. The backward compatible subscription offer is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one subscription offer can be marked as legacy compatible for a given renewing base plan. To have no Subscription offer as legacy compatible set this field as empty string.
            &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
            &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
          },
          &quot;basePlanId&quot;: &quot;A String&quot;, # Required. Immutable. The unique identifier of this base plan. Must be unique within the subscription, and conform with RFC-1034. That is, this ID can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 63 characters.
          &quot;installmentsBasePlanType&quot;: { # Represents an installments base plan where a user commits to a specified number of payments. # Set for installments base plans where a user is committed to a specified number of payments.
            &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
            &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
            &quot;committedPaymentsCount&quot;: 42, # Required. Immutable. The number of payments the user is committed to. It is immutable after the base plan is created.
            &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
            &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
            &quot;renewalType&quot;: &quot;A String&quot;, # Required. Immutable. Installments base plan renewal type. Determines the behavior at the end of the initial commitment. The renewal type is immutable after the base plan is created.
            &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
          },
          &quot;offerTags&quot;: [ # List of up to 20 custom tags specified for this base plan, and returned to the app through the billing library. Subscription offers for this base plan will also receive these offer tags in the billing library.
            { # Represents a custom tag specified for a product offer.
              &quot;tag&quot;: &quot;A String&quot;, # Must conform with RFC-1034. That is, this string can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 20 characters.
            },
          ],
          &quot;otherRegionsConfig&quot;: { # Pricing information for any new locations Play may launch in. # Pricing information for any new locations Play may launch in the future. If omitted, the BasePlan will not be automatically available any new locations Play may launch in the future.
            &quot;eurPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in EUR to use for any new locations Play may launch in.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
            &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan is available for new subscribers in any new locations Play may launch in. If not specified, this will default to false.
            &quot;usdPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in USD to use for any new locations Play may launch in.
              &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
              &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
              &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            },
          },
          &quot;prepaidBasePlanType&quot;: { # Represents a base plan that does not automatically renew at the end of the base plan, and must be manually renewed by the user. # Set when the base plan does not automatically renew at the end of the billing period.
            &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
            &quot;timeExtension&quot;: &quot;A String&quot;, # Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME_EXTENSION_ACTIVE if not specified.
          },
          &quot;regionalConfigs&quot;: [ # Region-specific information for this base plan.
            { # Configuration for a base plan specific to a region.
              &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan in the specified region is available for new subscribers. Existing subscribers will not have their subscription canceled if this value is set to false. If not specified, this will default to false.
              &quot;price&quot;: { # Represents an amount of money with its currency type. # The price of the base plan in the specified region. Must be set if the base plan is available to new subscribers. Must be set in the currency that is linked to the specified region.
                &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
                &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
              },
              &quot;regionCode&quot;: &quot;A String&quot;, # Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. &quot;US&quot;.
            },
          ],
          &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the base plan, i.e. whether it&#x27;s active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.
        },
      ],
      &quot;listings&quot;: [ # Required. List of localized listings for this subscription. Must contain at least an entry for the default language of the parent app.
        { # The consumer-visible metadata of a subscription.
          &quot;benefits&quot;: [ # A list of benefits shown to the user on platforms such as the Play Store and in restoration flows in the language of this listing. Plain text. Ordered list of at most four benefits.
            &quot;A String&quot;,
          ],
          &quot;description&quot;: &quot;A String&quot;, # The description of this subscription in the language of this listing. Maximum length - 80 characters. Plain text.
          &quot;languageCode&quot;: &quot;A String&quot;, # Required. The language of this listing, as defined by BCP-47, e.g. &quot;en-US&quot;.
          &quot;title&quot;: &quot;A String&quot;, # Required. The title of this subscription in the language of this listing. Plain text.
        },
      ],
      &quot;packageName&quot;: &quot;A String&quot;, # Immutable. Package name of the parent app.
      &quot;productId&quot;: &quot;A String&quot;, # Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.
      &quot;restrictedPaymentCountries&quot;: { # Countries where the purchase of this product is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed. # Optional. Countries where the purchase of this subscription is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed.
        &quot;regionCodes&quot;: [ # Required. Region codes to impose payment restrictions on, as defined by ISO 3166-2, e.g. &quot;US&quot;.
          &quot;A String&quot;,
        ],
      },
      &quot;taxAndComplianceSettings&quot;: { # Details about taxation, Google Play policy, and legal compliance for subscription products. # Details about taxes and legal compliance.
        &quot;eeaWithdrawalRightType&quot;: &quot;A String&quot;, # Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the [Help Center article](https://support.google.com/googleplay/android-developer/answer/10463498) for more information.
        &quot;isTokenizedDigitalAsset&quot;: True or False, # Whether this subscription is declared as a product representing a tokenized digital asset.
        &quot;taxRateInfoByRegionCode&quot;: { # A mapping from region code to tax rate details. The keys are region codes as defined by Unicode&#x27;s &quot;CLDR&quot;.
          &quot;a_key&quot;: { # Specified details about taxation in a given geographical region.
            &quot;eligibleForStreamingServiceTaxRate&quot;: True or False, # You must tell us if your app contains streaming products to correctly charge US state and local sales tax. Field only supported in the United States.
            &quot;streamingTaxType&quot;: &quot;A String&quot;, # To collect communications or amusement taxes in the United States, choose the appropriate tax category. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax).
            &quot;taxTier&quot;: &quot;A String&quot;, # Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498).
          },
        },
      },
    },
  ],
}</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="deactivate">deactivate(packageName, productId, basePlanId, body=None, x__xgafv=None)</code>
  <pre>Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription

Args:
  packageName: string, Required. The parent app (package name) of the base plan to deactivate. (required)
  productId: string, Required. The parent subscription (ID) of the base plan to deactivate. (required)
  basePlanId: string, Required. The unique base plan ID of the base plan to deactivate. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for DeactivateBasePlan.
  &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to deactivate.
  &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
  &quot;packageName&quot;: &quot;A String&quot;, # Required. The parent app (package name) of the base plan to deactivate.
  &quot;productId&quot;: &quot;A String&quot;, # Required. The parent subscription (ID) of the base plan to deactivate.
}

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

Returns:
  An object of the form:

    { # A single subscription for an app.
  &quot;archived&quot;: True or False, # Output only. Deprecated: subscription archiving is not supported.
  &quot;basePlans&quot;: [ # The set of base plans for this subscription. Represents the prices and duration of the subscription if no other offers apply.
    { # A single base plan for a subscription.
      &quot;autoRenewingBasePlanType&quot;: { # Represents a base plan that automatically renews at the end of its subscription period. # Set when the base plan automatically renews at a regular interval.
        &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;legacyCompatible&quot;: True or False, # Whether the renewing base plan is backward compatible. The backward compatible base plan is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one renewing base plan can be marked as legacy compatible for a given subscription.
        &quot;legacyCompatibleSubscriptionOfferId&quot;: &quot;A String&quot;, # Subscription offer id which is legacy compatible. The backward compatible subscription offer is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one subscription offer can be marked as legacy compatible for a given renewing base plan. To have no Subscription offer as legacy compatible set this field as empty string.
        &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
        &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
      },
      &quot;basePlanId&quot;: &quot;A String&quot;, # Required. Immutable. The unique identifier of this base plan. Must be unique within the subscription, and conform with RFC-1034. That is, this ID can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 63 characters.
      &quot;installmentsBasePlanType&quot;: { # Represents an installments base plan where a user commits to a specified number of payments. # Set for installments base plans where a user is committed to a specified number of payments.
        &quot;accountHoldDuration&quot;: &quot;A String&quot;, # Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and P60D. If not specified, the default value is P30D. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;committedPaymentsCount&quot;: 42, # Required. Immutable. The number of payments the user is committed to. It is immutable after the base plan is created.
        &quot;gracePeriodDuration&quot;: &quot;A String&quot;, # Grace period of the subscription, specified in ISO 8601 format. Acceptable values must be in days and between P0D and the lesser of 30D and base plan billing period. If not specified, a default value will be used based on the billing period. The sum of gracePeriodDuration and accountHoldDuration must be between P30D and P60D days, inclusive.
        &quot;prorationMode&quot;: &quot;A String&quot;, # The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.
        &quot;renewalType&quot;: &quot;A String&quot;, # Required. Immutable. Installments base plan renewal type. Determines the behavior at the end of the initial commitment. The renewal type is immutable after the base plan is created.
        &quot;resubscribeState&quot;: &quot;A String&quot;, # Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.
      },
      &quot;offerTags&quot;: [ # List of up to 20 custom tags specified for this base plan, and returned to the app through the billing library. Subscription offers for this base plan will also receive these offer tags in the billing library.
        { # Represents a custom tag specified for a product offer.
          &quot;tag&quot;: &quot;A String&quot;, # Must conform with RFC-1034. That is, this string can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 20 characters.
        },
      ],
      &quot;otherRegionsConfig&quot;: { # Pricing information for any new locations Play may launch in. # Pricing information for any new locations Play may launch in the future. If omitted, the BasePlan will not be automatically available any new locations Play may launch in the future.
        &quot;eurPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in EUR to use for any new locations Play may launch in.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
        &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan is available for new subscribers in any new locations Play may launch in. If not specified, this will default to false.
        &quot;usdPrice&quot;: { # Represents an amount of money with its currency type. # Required. Price in USD to use for any new locations Play may launch in.
          &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
          &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
        },
      },
      &quot;prepaidBasePlanType&quot;: { # Represents a base plan that does not automatically renew at the end of the base plan, and must be manually renewed by the user. # Set when the base plan does not automatically renew at the end of the billing period.
        &quot;billingPeriodDuration&quot;: &quot;A String&quot;, # Required. Immutable. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center. The duration is immutable after the base plan is created.
        &quot;timeExtension&quot;: &quot;A String&quot;, # Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME_EXTENSION_ACTIVE if not specified.
      },
      &quot;regionalConfigs&quot;: [ # Region-specific information for this base plan.
        { # Configuration for a base plan specific to a region.
          &quot;newSubscriberAvailability&quot;: True or False, # Whether the base plan in the specified region is available for new subscribers. Existing subscribers will not have their subscription canceled if this value is set to false. If not specified, this will default to false.
          &quot;price&quot;: { # Represents an amount of money with its currency type. # The price of the base plan in the specified region. Must be set if the base plan is available to new subscribers. Must be set in the currency that is linked to the specified region.
            &quot;currencyCode&quot;: &quot;A String&quot;, # The three-letter currency code defined in ISO 4217.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
          },
          &quot;regionCode&quot;: &quot;A String&quot;, # Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. &quot;US&quot;.
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the base plan, i.e. whether it&#x27;s active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.
    },
  ],
  &quot;listings&quot;: [ # Required. List of localized listings for this subscription. Must contain at least an entry for the default language of the parent app.
    { # The consumer-visible metadata of a subscription.
      &quot;benefits&quot;: [ # A list of benefits shown to the user on platforms such as the Play Store and in restoration flows in the language of this listing. Plain text. Ordered list of at most four benefits.
        &quot;A String&quot;,
      ],
      &quot;description&quot;: &quot;A String&quot;, # The description of this subscription in the language of this listing. Maximum length - 80 characters. Plain text.
      &quot;languageCode&quot;: &quot;A String&quot;, # Required. The language of this listing, as defined by BCP-47, e.g. &quot;en-US&quot;.
      &quot;title&quot;: &quot;A String&quot;, # Required. The title of this subscription in the language of this listing. Plain text.
    },
  ],
  &quot;packageName&quot;: &quot;A String&quot;, # Immutable. Package name of the parent app.
  &quot;productId&quot;: &quot;A String&quot;, # Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.
  &quot;restrictedPaymentCountries&quot;: { # Countries where the purchase of this product is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed. # Optional. Countries where the purchase of this subscription is restricted to payment methods registered in the same country. If empty, no payment location restrictions are imposed.
    &quot;regionCodes&quot;: [ # Required. Region codes to impose payment restrictions on, as defined by ISO 3166-2, e.g. &quot;US&quot;.
      &quot;A String&quot;,
    ],
  },
  &quot;taxAndComplianceSettings&quot;: { # Details about taxation, Google Play policy, and legal compliance for subscription products. # Details about taxes and legal compliance.
    &quot;eeaWithdrawalRightType&quot;: &quot;A String&quot;, # Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the [Help Center article](https://support.google.com/googleplay/android-developer/answer/10463498) for more information.
    &quot;isTokenizedDigitalAsset&quot;: True or False, # Whether this subscription is declared as a product representing a tokenized digital asset.
    &quot;taxRateInfoByRegionCode&quot;: { # A mapping from region code to tax rate details. The keys are region codes as defined by Unicode&#x27;s &quot;CLDR&quot;.
      &quot;a_key&quot;: { # Specified details about taxation in a given geographical region.
        &quot;eligibleForStreamingServiceTaxRate&quot;: True or False, # You must tell us if your app contains streaming products to correctly charge US state and local sales tax. Field only supported in the United States.
        &quot;streamingTaxType&quot;: &quot;A String&quot;, # To collect communications or amusement taxes in the United States, choose the appropriate tax category. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax).
        &quot;taxTier&quot;: &quot;A String&quot;, # Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498).
      },
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(packageName, productId, basePlanId, x__xgafv=None)</code>
  <pre>Deletes a base plan. Can only be done for draft base plans. This action is irreversible.

Args:
  packageName: string, Required. The parent app (package name) of the base plan to delete. (required)
  productId: string, Required. The parent subscription (ID) of the base plan to delete. (required)
  basePlanId: string, Required. The unique offer ID of the base plan to delete. (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="migratePrices">migratePrices(packageName, productId, basePlanId, body=None, x__xgafv=None)</code>
  <pre>Migrates subscribers from one or more legacy price cohorts to the current price. Requests result in Google Play notifying affected subscribers. Only up to 250 simultaneous legacy price cohorts are supported.

Args:
  packageName: string, Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource. (required)
  productId: string, Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource. (required)
  basePlanId: string, Required. The unique base plan ID of the base plan to update prices on. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for MigrateBasePlanPrices.
  &quot;basePlanId&quot;: &quot;A String&quot;, # Required. The unique base plan ID of the base plan to update prices on.
  &quot;latencyTolerance&quot;: &quot;A String&quot;, # Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.
  &quot;packageName&quot;: &quot;A String&quot;, # Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.
  &quot;productId&quot;: &quot;A String&quot;, # Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.
  &quot;regionalPriceMigrations&quot;: [ # Required. The regional prices to update.
    { # Configuration for migration of a legacy price cohort.
      &quot;oldestAllowedPriceVersionTime&quot;: &quot;A String&quot;, # Required. Subscribers in all legacy price cohorts before this time will be migrated to the current price. Subscribers in any newer price cohorts are unaffected. Affected subscribers will receive one or more notifications from Google Play about the price change. Price decreases occur at the subscriber&#x27;s next billing date. Price increases occur at the subscriber&#x27;s next billing date following a notification period that varies by region and price increase type.
      &quot;priceIncreaseType&quot;: &quot;A String&quot;, # Optional. The requested type of price increase
      &quot;regionCode&quot;: &quot;A String&quot;, # Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. &quot;US&quot;.
    },
  ],
  &quot;regionsVersion&quot;: { # The version of the available regions being used for the specified resource. # Required. The version of the available regions being used for the regional_price_migrations.
    &quot;version&quot;: &quot;A String&quot;, # Required. A string representing the version of available regions being used for the specified resource. Regional prices and latest supported version for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region&#x27;s version and set of regional prices and currencies will succeed even though a new version is available.
  },
}

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

Returns:
  An object of the form:

    { # Response message for MigrateBasePlanPrices.
}</pre>
</div>

</body></html>