Primer Client Session API API

The Client Session API API from Primer — 1 operation(s) for client session api.

OpenAPI Specification

primer-client-session-api-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  x-logo:
    url: https://apidocs.primer.io/docs/assets/images/primer-logo.svg
  title: Primer Client Session API API
  version: '2.4'
  description: This API enforces a timeout of 90 seconds for all requests. A 504 response indicates a timeout occurred.
servers:
- url: https://api.sandbox.primer.io
- url: https://api.primer.io
security:
- ApiKeyAuth: []
tags:
- name: Client Session API
paths:
  /client-session:
    post:
      tags:
      - Client Session API
      summary: Create a client session
      description: "Creating a client session generates a client token: a temporary key used to initialize [Universal Checkout](/docs/get-started/set-up-a-checkout) and authenticate it against your account.\n\nUniversal Checkout automatically retrieves all the settings from the client session and the Dashboard to configure the payment methods and the checkout experience.\n\n<b>Note:</b>\nWhen creating a Client Session, please make sure to provide `currencyCode`, `orderId`, and at least one of `amount` or `lineItems`. \nIf any of these are not yet available, you can provide them when making the payment request.\n\n<code>POST /client-session</code> does not have required fields as all fields are not always known when a client session is created. \nUse <code>PATCH /client-session</code> to update the parameters throughout the checkout session.\n\nClient tokens expire after 24 hours.\n"
      operationId: create_client_side_token_client_session_post
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientSessionAPIRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientSessionWithTokenAPIResponse'
        '400':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400ErrorResponse'
              examples:
                ClientSessionValidationError:
                  summary: The client token is invalid.
                  value:
                    error:
                      errorId: ClientSessionValidationError
                      description: The client token is invalid.
                      recoverySuggestion: Please provide a valid client token.
                      diagnosticsId: '1234567898'
                MetadataContainsEmptyKey:
                  summary: Metadata field contains empty string key.
                  value:
                    error:
                      errorId: MetadataContainsEmptyKey
                      description: Metadata field contains empty string key.
                      recoverySuggestion: Either remove empty string keys or provide non-empty string instead.
                      diagnosticsId: '1234567898'
        '422':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/422ErrorResponse'
              example:
                error:
                  errorId: RequestValidationError
                  description: We were unable to validate your request, please check your payload against /docs/api
                  diagnosticsId: '1234567898'
                  validationErrors:
                  - model: ClientSessionAPIRequest
                    errors:
                    - path: $.customerId
                      description: Value must be a valid string
    get:
      tags:
      - Client Session API
      summary: Retrieve a client session
      description: 'This API call retrieves all the details associated with the client session corresponding to the client token that is provided in the request. The fields with empty values are excluded from the response.

        '
      operationId: retrieve_client_side_token_client_session_get
      parameters:
      - description: Client token corresponding to the client session to retrieve
        schema:
          title: Client Token
          type: string
          description: Client token
        name: clientToken
        in: query
      - $ref: '#/components/parameters/ApiVersionHeader'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientSessionAPIResponse'
        '400':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400ErrorResponse'
        '422':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/422ErrorResponse'
    patch:
      tags:
      - Client Session API
      summary: Update client session
      description: 'You can update a clients session created earlier with the `PATCH /client-session` [API call](#operation/create_client_side_token_client_session_post).


        The only required field for the request is `clientToken`. Other supported request fields are same as for the `POST /client-session` [API call](#operation/create_client_side_token_client_session_post).


        You need to specify only the fields you wish to update. However, if the items to be updated are arrays (e.g.`lineItems`), you need to provide the entire array, including any new or modified items. Primer will replace the full array with whatever is sent in the request. If you want to keep existing items, make sure to include them in your request, anything omitted will be removed.


        If you wish to update nested fields on the client session, such as the customer `emailAddress` field, you can pass the `customer` object with only one field, `emailAddress`, to update.


        If you simply wish to clear the value of the field, pass `null` as your input.


        You can update `paymentMethod.vaultOnSuccess` field but updating of the `paymentMethod.options` field through `PATCH /client-session` is not supported.


        The response will contain all the fields of the client session including the ones that were changed.

        '
      operationId: update_client_side_token_client_session_patch
      parameters:
      - $ref: '#/components/parameters/ApiVersionHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientSessionUpdateAPIRequest'
              title: Request
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientSessionAPIResponse'
        '400':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400ErrorResponse'
              examples:
                ClientSessionValidationError:
                  summary: The client token is invalid.
                  value:
                    error:
                      errorId: ClientSessionValidationError
                      description: The client token is invalid.
                      recoverySuggestion: Please provide a valid client token.
                      diagnosticsId: '1234567898'
                MetadataContainsEmptyKey:
                  summary: Metadata field contains empty string key.
                  value:
                    error:
                      errorId: MetadataContainsEmptyKey
                      description: Metadata field contains empty string key.
                      recoverySuggestion: Either remove empty string keys or provide non-empty string instead.
                      diagnosticsId: '1234567898'
        '422':
          description: Error Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/422ErrorResponse'
components:
  schemas:
    CheckoutPaymentMethodOptionSurchargeAPISchema:
      title: CheckoutPaymentMethodOptionSurchargeAPISchema
      type: object
      properties:
        amount:
          type: integer
          minimum: 0.0
          format: int64
          description: The surcharge amount, in minor units. Surcharge amount must be used in conjunction with line item amounts, if a top level amount is passed then surcharge will not be calculated.
    AuthorizationTypeEnum:
      title: AuthorizationTypeEnum
      enum:
      - ESTIMATED
      - FINAL
      type: string
      description: Type of authorization for the payment.
    ApplePayAutomaticReloadBilling:
      title: ApplePayAutomaticReloadBilling
      type: object
      required:
      - label
      - automaticReloadThresholdAmount
      properties:
        label:
          $ref: '#/components/schemas/ApplePayLabel'
        amount:
          $ref: '#/components/schemas/Amount'
        automaticReloadThresholdAmount:
          type: integer
          format: int64
          minimum: 0
          description: Balance threshold in minor units (e.g., 500 = $5.00) that triggers the reload.
      example:
        label: Auto Reload
        amount: 2500
        automaticReloadThresholdAmount: 500
    ApplePayDeferredBilling:
      title: ApplePayDeferredBilling
      type: object
      required:
      - label
      - deferredPaymentDate
      properties:
        label:
          $ref: '#/components/schemas/ApplePayLabel'
        amount:
          $ref: '#/components/schemas/Amount'
        deferredPaymentDate:
          type: string
          format: date-time
          description: 'Start of billing cycle date and time (UTC) in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601).

            '
      example:
        label: Product Payment
        amount: 4999
        deferredPaymentDate: '2024-07-03T00:00:00Z'
    OptionalAddressAPISchema:
      title: OptionalAddressAPISchema
      type: object
      properties:
        firstName:
          title: First Name
          type: string
          minLength: 1
          maxLength: 255
        lastName:
          title: Last Name
          type: string
          minLength: 1
          maxLength: 255
        addressLine1:
          title: Address Line 1
          type: string
          description: Street name, Company name or PO Box
          minLength: 1
          maxLength: 255
        addressLine2:
          title: Address Line 2
          type: string
          description: Apartment, Unit or Building number
          maxLength: 255
        city:
          title: City
          type: string
          description: Name of the city, district, town or village
          minLength: 1
          maxLength: 255
        state:
          title: State
          type: string
          description: State, County or Province
          minLength: 1
          maxLength: 255
        countryCode:
          $ref: '#/components/schemas/CountryCodeEnum'
          title: Country Code
          description: Two letter ISO country code
        postalCode:
          title: Postal Code
          type: string
          description: Postal or ZIP code
          minLength: 1
          maxLength: 255
    ApplePayTrialBilling:
      title: ApplePayTrialBilling
      type: object
      required:
      - label
      properties:
        label:
          $ref: '#/components/schemas/ApplePayLabel'
        amount:
          allOf:
          - $ref: '#/components/schemas/Amount'
          default: 0
        recurringStartDate:
          type: string
          format: date-time
          description: 'Start of billing cycle date and time (UTC) in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601). If not provided, Apple Pay defaults it to now().

            '
        recurringEndDate:
          type: string
          format: date-time
          description: 'End of billing cycle date and time (UTC) in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601).

            '
        recurringIntervalUnit:
          $ref: '#/components/schemas/ApplePayIntervalUnit'
        recurringIntervalCount:
          $ref: '#/components/schemas/ApplePayIntervalCount'
      example:
        label: Free Trial
        amount: 0
        recurringEndDate: '2024-06-09T00:00:00Z'
    ApplePayIntervalUnit:
      type: string
      enum:
      - minute
      - hour
      - day
      - month
      - year
      description: 'Calendar unit representing part of a recurring billing interval.

        '
    ClientSessionAPIResponse:
      title: ClientSessionAPIResponse
      type: object
      properties:
        customerId:
          title: The ID of the customer using the checkout
          type: string
          description: A unique identifier for your customer.
          maxLength: 255
        orderId:
          title: Order ID
          type: string
          description: Your reference for the payment.
          maxLength: 255
        currencyCode:
          $ref: '#/components/schemas/Currency'
          title: Currency
          description: 'The 3-letter currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). e.g. use `USD` for US dollars.

            '
        amount:
          title: Payment amount
          minimum: 0.0
          type: integer
          format: int64
          description: "The amount you are going to charge the customer, in minor units. This amount is calculated from the line items, shipping and other amounts provided in the `order`. \nIf a top-level amount is provided, it would override any calculated amount."
        metadata:
          title: Payment Metadata
          type: object
          description: 'Additional data to be used throughout the payment lifecycle.

            '
        customer:
          $ref: '#/components/schemas/CustomerDetailsAPISchema'
          title: Customer Details
          description: More information associated with the customer.
        order:
          $ref: '#/components/schemas/OrderDetailsAPISchema'
          title: Order Details
          description: More information associated with the order.
        paymentMethod:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionsAPISchema'
          title: Payment Method Options
          description: Enable certain options associated with the payment methods.
      example:
        customerId: customer-123
        orderId: order-abc
        currencyCode: GBP
        amount: 650
        metadata:
          productType: Clothing
        customer:
          emailAddress: john@primer.io
        order:
          lineItems:
          - itemId: t-shirt-1
            description: White T-Shirt
            amount: 500
            quantity: 1
          fees:
          - type: SURCHARGE
            amount: 100
          shipping:
            amount: 50
          paymentMethod:
            vaultOnSuccess: false
            vaultOn3DS: false
            options:
              GOOGLE_PAY:
                surcharge:
                  amount: 100
              PAYMENT_CARD:
                networks:
                  VISA:
                    surcharge:
                      amount: 10
                  MASTERCARD:
                    surcharge:
                      amount: 20
              PAY_NL_IDEAL:
                surcharge:
                  amount: 50
          authorizationType: ESTIMATED
    OrderLineItemsProductDataAPISchema:
      title: OrderLineItemsProductDataAPISchema
      description: Details related to the product
      type: object
      properties:
        sku:
          title: SKU
          type: string
          description: The product SKU
          minLength: 1
          maxLength: 255
        brand:
          title: Brand
          type: string
          description: The product brand
          minLength: 1
          maxLength: 255
        color:
          title: Color
          type: string
          description: The product color
          minLength: 1
          maxLength: 255
        globalTradeItemNumber:
          title: Global Trade Item Number
          type: string
          description: The product Global Trade Item Number (e.g. ISBN)
          minLength: 1
          maxLength: 255
        manufacturerPartNumber:
          title: Manufacturer Part Number
          type: string
          description: The product Manufacturer Part Number
          minLength: 1
          maxLength: 255
        weight:
          title: Weight
          type: number
          description: The product weight
          minimum: 0.0
        weightUnit:
          title: Weight Unit
          type: string
          description: The product weight unit (e.g. kg, g)
          minLength: 1
          maxLength: 255
        pageUrl:
          title: Page URL
          type: string
          description: The product page URL
          minLength: 1
          maxLength: 1024
    Currency:
      title: Currency
      enum:
      - AED
      - AFN
      - ALL
      - AMD
      - ANG
      - AOA
      - ARS
      - AUD
      - AWG
      - AZN
      - BAM
      - BBD
      - BDT
      - BGN
      - BHD
      - BIF
      - BMD
      - BND
      - BOB
      - BOV
      - BRL
      - BSD
      - BTN
      - BWP
      - BYR
      - BYN
      - BZD
      - CAD
      - CDF
      - CHE
      - CHF
      - CHW
      - CLP
      - CNY
      - COP
      - COU
      - CRC
      - CUC
      - CUP
      - CVE
      - CZK
      - DJF
      - DKK
      - DOP
      - DZD
      - EGP
      - ERN
      - ETB
      - EUR
      - FJD
      - FKP
      - GBP
      - GEL
      - GHS
      - GIP
      - GMD
      - GNF
      - GTQ
      - GYD
      - HKD
      - HNL
      - HRK
      - HTG
      - HUF
      - IDR
      - ILS
      - INR
      - IQD
      - IRR
      - ISK
      - JMD
      - JOD
      - JPY
      - KES
      - KGS
      - KHR
      - KMF
      - KPW
      - KRW
      - KWD
      - KYD
      - KZT
      - LAK
      - LBP
      - LKR
      - LRD
      - LSL
      - LYD
      - MAD
      - MDL
      - MKD
      - MMK
      - MNT
      - MOP
      - MRO
      - MUR
      - MVR
      - MWK
      - MXN
      - MXV
      - MYR
      - MZN
      - NAD
      - NGN
      - NIO
      - NOK
      - NPR
      - NZD
      - OMR
      - PAB
      - PEN
      - PGK
      - PHP
      - PKR
      - PLN
      - PYG
      - QAR
      - RON
      - RSD
      - RUB
      - RWF
      - SAR
      - SBD
      - SCR
      - SDG
      - SEK
      - SGD
      - SHP
      - SOS
      - SRD
      - SSP
      - SVC
      - SYP
      - SZL
      - THB
      - TJS
      - TMT
      - TND
      - TOP
      - TRY
      - TTD
      - TWD
      - TZS
      - UAH
      - UGX
      - USD
      - UYU
      - UZS
      - VND
      - VUV
      - WST
      - XAF
      - XAG
      - XAU
      - XBA
      - XBB
      - XBC
      - XBD
      - XCD
      - XDR
      - XFU
      - XOF
      - XPD
      - XPF
      - XPT
      - XSU
      - XTS
      - XUA
      - YER
      - ZAR
      - ZMW
      - ZWL
      description: "3-letter currency code in <a href='https://en.wikipedia.org/wiki/ISO_4217#Active_codes'>ISO 4217</a> format, \ne.g. <code>USD</code> for US dollars.\n"
    Amount:
      type: integer
      format: int64
      minimum: 0
      description: 'Charge amount in minor units (e.g., 500 = $5.00). Some currencies, such as Japanese Yen, do not have minor units. In this case, use the value as-is (e.g., ¥100 = 100).

        '
    ApplePayAutomaticReloadRequest:
      title: ApplePayAutomaticReloadRequest
      type: object
      required:
      - managementUrl
      - automaticReloadBilling
      properties:
        paymentDescription:
          $ref: '#/components/schemas/ApplePayPaymentDescription'
        billingAgreement:
          $ref: '#/components/schemas/ApplePayBillingAgreement'
        managementUrl:
          $ref: '#/components/schemas/ApplePayManagementUrl'
        automaticReloadBilling:
          $ref: '#/components/schemas/ApplePayAutomaticReloadBilling'
      example:
        paymentDescription: Account Auto Reload
        billingAgreement: When your balance drops below the threshold, we'll automatically reload your account.
        managementUrl: https://example.com/account
        automaticReloadBilling:
          label: Auto Reload
          amount: 2500
          automaticReloadThresholdAmount: 500
    RecurringTransactionTypeEnum:
      title: RecurringTransactionTypeEnum
      enum:
      - FIRST_PAYMENT
      - ECOMMERCE
      - SUBSCRIPTION
      - UNSCHEDULED
      type: string
      description: An enumeration.
    CheckoutPaymentMethodCardOptionAPISchema:
      title: Payment Method Card Option
      type: object
      properties:
        networks:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkAPISchema'
          title: Card networks
          description: Dictionary of available card networks as a key with value of Payment Method Card Network Option.
        captureVaultedCardCvv:
          type: boolean
          description: Whether to capture CVV for vaulted card.
    ErrorObject:
      title: Error
      type: object
      description: An object containing information about the error that occurred.
      required:
      - errorId
      - description
      properties:
        errorId:
          title: Error ID
          type: string
          description: An error ID
        description:
          title: Error description
          type: string
          description: A human readable description of the error
        recoverySuggestion:
          title: Recovery Suggestion
          type: string
          description: A suggestion on how to recover from the error.
        diagnosticsId:
          title: Error diagnostics ID
          type: string
          description: An ID that you can quote when contacting the Primer support team via our [Support Portal](https://primerapi.atlassian.net/servicedesk/customer/portal/11).
        validationErrors:
          title: Validation Errors
          type: array
          items:
            type: object
          description: Returned in case of a badly formed request
    OrderFeesAPISchema:
      title: OrderFeesAPISchema
      type: object
      required:
      - amount
      properties:
        amount:
          minimum: 0.0
          type: integer
          format: int64
          description: The fee amount charged to the customer, in minor  units. e.g. for $7, use `700`.
        type:
          type: string
          description: The type of fee.
          minLength: 1
          maxLength: 255
        description:
          type: string
          description: A description of the fee, e.g. "Currency Conversion Fee".
          minLength: 1
          maxLength: 255
    CheckoutPaymentMethodOptionCardNetworkAPISchema:
      title: Payment Method Card Network Option
      type: object
      properties:
        AMEX:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        CARTES_BANCAIRES:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        DANKORT:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        DINERS_CLUB:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        DISCOVER:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        ENROUTE:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        ELO:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        HIPER:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        INTERAC:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        JCB:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        MAESTRO:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        MASTERCARD:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        MIR:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        PRIVATE_LABEL:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        UNIONPAY:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        VISA:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
        OTHER:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionCardNetworkSurchargeAPISchema'
      additionalProperties: false
    422ErrorResponse:
      title: 422ErrorResponse
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorObject'
    CheckoutPaymentMethodApplePayOptionAPISchema:
      title: ApplePayOptions
      type: object
      description: Apple Pay configuration used in a client session's payment method options.
      properties:
        merchantName:
          type: string
          description: Display name for the merchant shown in the Apple Pay sheet.
          minLength: 1
          maxLength: 1024
        recurringPaymentRequest:
          $ref: '#/components/schemas/ApplePayRecurringRequest'
        deferredPaymentRequest:
          $ref: '#/components/schemas/ApplePayDeferredRequest'
        automaticReloadRequest:
          $ref: '#/components/schemas/ApplePayAutomaticReloadRequest'
      example:
        merchantName: My Store
        recurringPaymentRequest:
          paymentDescription: Monthly Subscription
          billingAgreement: You agree to pay monthly until you cancel.
          managementUrl: https://example.com/manage
          regularBilling:
            label: Monthly Plan
            amount: 999
            recurringStartDate: '2025-06-09T00:00:00Z'
            recurringIntervalUnit: month
    RecurringPaymentTypeSchema:
      $ref: '#/components/schemas/RecurringTransactionTypeEnum'
      title: Recurring Payment Type
      description: "Payment types, primarily to be used for recurring payments.\nSee the table below for all possible values. \n\nNote: if no field is set, we will return a blank value and make a best effort\nto calculate the downstream fields required for processing the payment.\n\n| paymentType | Use case |\n| --- | --- |\n| `FIRST_PAYMENT` | a customer-initiated payment which is the first in a series of recurring payments or subscription, or a card on file scenario. |\n| `ECOMMERCE` | a customer-initiated payment using stored payment details where the cardholder is present. |\n| `SUBSCRIPTION` | a merchant-initiated payment as part of a series of payments on a fixed schedule and a set amount. |\n| `UNSCHEDULED` | a merchant-initiated payment using stored payment details with no fixed schedule or amount. |\n"
    CardNetworkEnum:
      title: CardNetworkEnum
      enum:
      - AMEX
      - DANKORT
      - DINERS_CLUB
      - DISCOVER
      - EFTPOS
      - ENROUTE
      - ELO
      - HIPER
      - INTERAC
      - JCB
      - MAESTRO
      - MASTERCARD
      - MIR
      - PRIVATE_LABEL
      - UNIONPAY
      - VISA
      - CARTES_BANCAIRES
      - OTHER
      type: string
      description: 'The list of available card networks.

        '
    OrderDetailsAPISchema:
      title: OrderDetailsAPISchema
      type: object
      properties:
        lineItems:
          title: Line Items
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItemsAPISchema'
          description: The details of the line items of the order.
        countryCode:
          $ref: '#/components/schemas/CountryCodeEnum'
          title: Country Code
          description: The country in which the order is created
        retailerCountryCode:
          $ref: '#/components/schemas/CountryCodeEnum'
          title: Retailer Country Code
          description: The country code of the retailer
        fees:
          title: Fee Details
          type: array
          items:
            $ref: '#/components/schemas/OrderFeesAPISchema'
          description: The details of fees charged.
        shipping:
          $ref: '#/components/schemas/OrderShippingAPISchema'
          title: Shipping Details
          description: The details of shipping charged.
    CheckoutPaymentMethodOptionExtraMerchantDataAPISchema:
      title: CheckoutPaymentMethodOptionExtraMerchantDataAPISchema
      type: object
      additionalProperties: true
    ClientSessionAPIRequest:
      title: ClientSessionAPIRequest
      type: object
      properties:
        orderId:
          title: Order identifier
          type: string
          description: Your reference for the payment.
          minLength: 1
          maxLength: 255
        currencyCode:
          $ref: '#/components/schemas/Currency'
          title: Currency
          description: 'The 3-letter currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). e.g. use `USD` for US dollars.

            '
        amount:
          title: Payment amount
          minimum: 0.0
          type: integer
          format: int64
          description: 'The amount you would like to charge the customer, in minor units. e.g. for $7, use `700`.


            Some currencies, such as Japanese Yen, do not have minor units. In this case you should use the value as it is, without any formatting. For example for ¥100, use `100`.


            If the amount is provided on this level, it would override any amount calculated from the provided line items, shipping and other amounts.'
        order:
          $ref: '#/components/schemas/OrderDetailsAPISchema'
          title: Order Details
          description: More information associated with the order.
        customerId:
          title: The ID of the customer using the checkout
          type: string
          description: 'A unique identifier for your customer.

            Create a client session token with a `customerId` to enable the client-side SDK to retrieve and manage your customer''s saved payment methods. A client session token also enables saving payment methods against this customer id.'
          minLength: 1
          maxLength: 255
        customer:
          $ref: '#/components/schemas/CheckoutCustomerDetailsAPISchema'
          title: Customer Details
          description: More information associated with the customer.
        metadata:
          title: Payment Metadata
          type: object
          description: 'Additional data to be used throughout the payment lifecycle.


            A dictionary of key-value pairs where the values can only be strings or

            integers.


            e.g. `{"productId": 1001, "merchantId": "a13bsd62s"}`

            '
        paymentMethod:
          $ref: '#/components/schemas/CheckoutPaymentMethodOptionsAPISchema'
          title: Payment Method Options
          description: Enable certain options associated with the payment method.
      additionalProperties: false
      example:
        orderId: order-abc
        currencyCode: GBP
        amount: 1000
        order:
          countryCode: FR,
          lineItems:
          - itemId: shoe-123
            description: Blue Shoe
            amount: 100
            quantity: 10
        customerId: customer-123
        customer:
          emailAddress: john@primer.io
        metadata:
          productType: Shoes
        paymentMethod:
          descriptor: 'Purchase: Shoes'
          paymentMethodType: PAYMENT_CARD
          vaultOnSuccess: true
          vaultOn3DS: false
          options:
            PAYMENT_CARD:
              networks:
                VISA:
                  surcharge:
                    amount: 10
            GOOGLE_PAY:
              surcharge:
                amount: 20
          authorizationType: ESTIMATED
    ApplePayManagementUrl:
      type: string
      format: uri
      minLength: 1
      maxLength: 1024
      description: 'URL where users can manage or cancel their Apple Pay billing agreements or subscriptions.

        '
    ClientSessionWarningsAPIResponse:
      title: ClientSessionWarningsAPIResponse
      type: object
      properties:
        type:
          type: string
          

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/primer/refs/heads/main/openapi/primer-client-session-api-api-openapi.yml