Primer Client Session API API
The Client Session API API from Primer — 1 operation(s) for client session api.
The Client Session API API from Primer — 1 operation(s) for client session api.
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