---
title: "POST /v1/{+parent}/userSessions:generate"
method: POST
path: "/v1/{+parent}/userSessions:generate"
tags: ["partners"]
---

# POST /v1/{+parent}/userSessions:generate

`POST /v1/{+parent}/userSessions:generate`

This API replaces user authorized OAuth consent based APIs (Create, Entitle). Issues a timed session token for the given user intent. You can use the session token to redirect the user to Google to finish the signup flow. You can re-generate new session token repeatedly for the same request if necessary, regardless of the previous tokens being expired or not. By default, the session token is valid for 1 hour.

## Path parameters

- `parent` string, required

## Request body

- GenerateUserSessionRequest — Request to generate a user session.
  - `intentPayload` IntentPayload — The payload that describes the user intent.
    - `intentOptions` IntentPayloadIntentOptions — The options for the intent.
      - `enableOfferOverride` boolean — Optional. If true, Google may use a different product and promotion id from the ones in the `create_intent` based on the user's eligibility. Only applicable for certain YouTube free trial offers.
    - `createIntent` CreateSubscriptionIntent — Intent message for creating a Subscription resource.
      - `parent` string — Optional. Deprecated: Use the `parent` field in `GenerateUserSessionRequest` instead. The parent resource name, which is the identifier of the partner.
      - `subscription` Subscription — Acts as a central billing entity between an external partner and Google. Google services use the subscription state to grant or revoke the user's service entitlement. Note: The subscription state might not perfectly align with the user's service entitlement. Some services might continue providing access until the current cycle ends, even if the subscription is immediately canceled. Consult the relevant contract or product policy for specific details.
        - `cycleEndTime` string, google-datetime — Output only. The time at which the subscription is expected to be extended, in ISO 8061 format. UTC timezone. For example: "2019-08-31T17:28:54.564Z"
        - `promotions` string[] — Optional. Deprecated: consider using the top-level `promotion_specs` as the input. Optional. Resource name that identifies one or more promotions that can be applied on the product. A typical promotion for a subscription is Free trial. The format will be 'partners/{partner_id}/promotions/{promotion_id}'.
        - `name` string — Identifier. Resource name of the subscription. It will have the format of "partners/{partner_id}/subscriptions/{subscription_id}". This is available for authorizeAddon, but otherwise is response only.
        - `promotionSpecs` SubscriptionPromotionSpec[] — Optional. Subscription-level promotions. Only free trial is supported on this level. It determines the first renewal time of the subscription to be the end of the free trial period. Specify the promotion resource name only when used as input.
          - `promotion` string — Required. Promotion resource name that identifies a promotion. The format is 'partners/{partner_id}/promotions/{promotion_id}'.
          - `introductoryPricingDetails` PromotionIntroductoryPricingDetails — The details of a introductory pricing promotion.
            - `introductoryPricingSpecs` PromotionIntroductoryPricingDetailsIntroductoryPricingSpec[] — Output only. Specifies the introductory pricing periods.
              - …
          - `type` 'PROMOTION_TYPE_UNSPECIFIED' | 'PROMOTION_TYPE_FREE_TRIAL' | 'PROMOTION_TYPE_INTRODUCTORY_PRICING' — Output only. The type of the promotion for the spec.
          - `freeTrialDuration` Duration — Describes the length of a period of a time.
            - `unit` 'UNIT_UNSPECIFIED' | 'MONTH' | 'DAY' | 'HOUR' — The unit used for the duration
            - `count` integer — number of duration units to be included.
        - `endUserEntitled` boolean — Output only. Indicates if the subscription is entitled to the end user.
        - `partnerUserToken` string — Required. Identifier of the end-user in partner’s system. The value is restricted to 63 ASCII characters at the maximum.
        - `upgradeDowngradeDetails` SubscriptionUpgradeDowngradeDetails — Details about the previous subscription that this new subscription upgrades/downgrades from.
          - `previousSubscriptionId` string — Required. The previous subscription id to be replaced. The format can be one of the following: 1. `subscription_id`: the old subscription id under the same partner_id. 2. `partners/{partner_id}/subscriptions/{subscription_id}`. A different partner_id is allowed. But they must be under the same partner group.
          - `billingCycleSpec` 'BILLING_CYCLE_SPEC_UNSPECIFIED' | 'BILLING_CYCLE_SPEC_ALIGN_WITH_PREVIOUS_SUBSCRIPTION' | 'BILLING_CYCLE_SPEC_START_IMMEDIATELY' | 'BILLING_CYCLE_SPEC_DEFERRED_TO_NEXT_RECURRENCE' — Required. Specifies the billing cycle spec for the new upgraded/downgraded subscription.
        - `migrationDetails` SubscriptionMigrationDetails — Describes the details of the migrated subscription.
          - `migratedSubscriptionId` string — Output only. The migrated subscription id in the legacy system.
        - `purchaseTime` string, google-datetime — Optional. The timestamp when the user transaction was made with the Partner. Specify for the case of "bundle with choice", and it must be before the provision_time (when the user makes a selection).
        - `cancellationDetails` SubscriptionCancellationDetails — Describes the details of a cancelled or cancelling subscription.
          - `reason` 'CANCELLATION_REASON_UNSPECIFIED' | 'CANCELLATION_REASON_FRAUD' | 'CANCELLATION_REASON_REMORSE' | 'CANCELLATION_REASON_ACCIDENTAL_PURCHASE' | 'CANCELLATION_REASON_PAST_DUE' | 'CANCELLATION_REASON_ACCOUNT_CLOSED' | 'CANCELLATION_REASON_UPGRADE_DOWNGRADE' | 'CANCELLATION_REASON_USER_DELINQUENCY' | 'CANCELLATION_REASON_SYSTEM_ERROR' | 'CANCELLATION_REASON_SYSTEM_CANCEL' | 'CANCELLATION_REASON_BILLING_SYSTEM_SWITCH' | 'CANCELLATION_REASON_OTHER' — Output only. The reason of the cancellation.
        - `updateTime` string, google-datetime — Output only. System generated timestamp when the subscription is most recently updated. UTC timezone.
        - `createTime` string, google-datetime — Output only. System generated timestamp when the subscription is created. UTC timezone.
        - `products` string[] — Optional. Deprecated: consider using `line_items` as the input. Required. Resource name that identifies the purchased products. The format will be 'partners/{partner_id}/products/{product_id}'.
        - `processingState` 'PROCESSING_STATE_UNSPECIFIED' | 'PROCESSING_STATE_CANCELLING' | 'PROCESSING_STATE_RECURRING' | 'PROCESSING_STATE_RESUMING' | 'PROCESSING_STATE_SUSPENDING' — Output only. Describes the processing state of the subscription. See more details at [the lifecycle of a subscription](/payments/reseller/subscription/reference/index/Receive.Notifications#payments-subscription-lifecycle).
        - `serviceLocation` Location — Describes a location of an end user.
          - `regionCode` string — 2-letter ISO region code for current content region. Ex. “US” Please refers to: https://en.wikipedia.org/wiki/ISO_3166-1
          - `postalCode` string — The postal code this location refers to. Ex. "94043"
        - `redirectUri` string — Output only. The place where partners should redirect the end-user to after creation. This field might also be populated when creation failed. However, Partners should always prepare a default URL to redirect the user in case this field is empty.
        - `state` 'STATE_UNSPECIFIED' | 'STATE_CREATED' | 'STATE_ACTIVE' | 'STATE_CANCELLED' | 'STATE_IN_GRACE_PERIOD' | 'STATE_CANCEL_AT_END_OF_CYCLE' | 'STATE_SUSPENDED' — Output only. Describes the state of the subscription. See more details at [the lifecycle of a subscription](/payments/reseller/subscription/reference/index/Receive.Notifications#payments-subscription-lifecycle).
        - `renewalTime` string, google-datetime — Output only. The time at which the subscription is expected to be renewed by Google - a new charge will be incurred and the service entitlement will be renewed. A non-immediate cancellation will take place at this time too, before which, the service entitlement for the end user will remain valid. UTC timezone in ISO 8061 format. For example: "2019-08-31T17:28:54.564Z"
        - `lineItems` SubscriptionLineItem[] — Required. The line items of the subscription.
          - `lineItemFreeTrialEndTime` string, google-datetime — Output only. The free trial end time will be populated after the line item is successfully processed. End time of the line item free trial period, in ISO 8061 format. For example, "2019-08-31T17:28:54.564Z". It will be set the same as createTime if no free trial promotion is specified.
          - `recurrenceType` 'LINE_ITEM_RECURRENCE_TYPE_UNSPECIFIED' | 'LINE_ITEM_RECURRENCE_TYPE_PERIODIC' | 'LINE_ITEM_RECURRENCE_TYPE_ONE_TIME' — Output only. The recurrence type of the line item.
          - `productPayload` ProductPayload — Specifies product specific payload.
            - `googleOnePayload` GoogleOnePayload — Payload specific to Google One products.
              - …
            - `youtubePayload` YoutubePayload — Payload specific to Youtube products.
              - …
            - `googleHomePayload` GoogleHomePayload — Payload specific for Google Home products.
              - …
          - `product` string — Required. Product resource name that identifies the product associated with this line item. The format is 'partners/{partner_id}/products/{product_id}'.
          - `finiteBillingCycleDetails` FiniteBillingCycleDetails — Details for a subscription line item with finite billing cycles.
            - `billingCycleCountLimit` string, int64 — The number of a subscription line item billing cycles after which billing will stop automatically.
          - `oneTimeRecurrenceDetails` SubscriptionLineItemOneTimeRecurrenceDetails — Details for a ONE_TIME recurrence line item.
            - `servicePeriod` ServicePeriod — A description of what time period or moment in time the product or service is being delivered over.
              - …
          - `state` 'LINE_ITEM_STATE_UNSPECIFIED' | 'LINE_ITEM_STATE_ACTIVE' | 'LINE_ITEM_STATE_INACTIVE' | 'LINE_ITEM_STATE_NEW' | 'LINE_ITEM_STATE_ACTIVATING' | 'LINE_ITEM_STATE_DEACTIVATING' | 'LINE_ITEM_STATE_WAITING_TO_DEACTIVATE' | 'LINE_ITEM_STATE_OFF_CYCLE_CHARGING' — Output only. The state of the line item.
          - `description` string — Output only. Description of this line item.
          - `amount` Amount — Describes the amount unit including the currency code.
            - `currencyCode` string — Required. Currency codes in accordance with [ISO-4217 Currency Codes] (https://en.wikipedia.org/wiki/ISO_4217). For example, USD.
            - `amountMicros` string, int64 — Required. Amount in micros (1_000_000 micros = 1 currency unit)
          - `lineItemIndex` integer — Output only. A unique index of the subscription line item.
          - `lineItemPromotionSpecs` SubscriptionPromotionSpec[] — Optional. The promotions applied on the line item. It can be: - an introductory pricing promotion. - a free trial promotion. This feature is not enabled. If used, the request will be rejected. When used as input in Create or Provision API, specify its resource name only.
            - `promotion` string — Required. Promotion resource name that identifies a promotion. The format is 'partners/{partner_id}/promotions/{promotion_id}'.
            - `introductoryPricingDetails` PromotionIntroductoryPricingDetails — The details of a introductory pricing promotion.
              - …
            - `type` 'PROMOTION_TYPE_UNSPECIFIED' | 'PROMOTION_TYPE_FREE_TRIAL' | 'PROMOTION_TYPE_INTRODUCTORY_PRICING' — Output only. The type of the promotion for the spec.
            - `freeTrialDuration` Duration — Describes the length of a period of a time.
              - …
          - `name` string — Identifier. Resource name of the line item. Format: partners/{partner}/subscriptions/{subscription}/lineItems/{lineItem}
          - `bundleDetails` SubscriptionLineItemBundleDetails — The bundle details for a line item corresponding to a hard bundle.
            - `bundleElementDetails` SubscriptionLineItemBundleDetailsBundleElementDetails[] — Output only. The details for each element in the hard bundle.
              - …
        - `freeTrialEndTime` string, google-datetime — Output only. End of the free trial period, in ISO 8061 format. For example, "2019-08-31T17:28:54.564Z". It will be set the same as createTime if no free trial promotion is specified.
      - `subscriptionId` string — Required. Identifies the subscription resource on the Partner side. The value is restricted to 63 ASCII characters at the maximum. If a subscription was previously created with the same subscription_id, we will directly return that one.
      - `cycleOptions` CycleOptions — The cycle options when starting and resuming a subscription.
        - `initialCycleDuration` Duration — Describes the length of a period of a time.
          - `unit` 'UNIT_UNSPECIFIED' | 'MONTH' | 'DAY' | 'HOUR' — The unit used for the duration
          - `count` integer — number of duration units to be included.
    - `entitleIntent` EntitleSubscriptionIntent — Intent for entitling the previously provisioned subscription to an end user.
      - `name` string — Required. The name of the subscription resource that is entitled to the current end user. It is in the format of "partners/{partner_id}/subscriptions/{subscriptionId}".

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/paymentsresellersubscription.md) · [All operations](https://skmtc.net/google/apis/paymentsresellersubscription/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/paymentsresellersubscription/versions/c3d2f15ca50d/schema)
