openapi: 3.1.0
servers:
- url: https://checkout-test.adyen.com/checkout/possdk/v68
info:
  version: '68'
  x-publicVersion: true
  title: POS Mobile API
  description: "The POS Mobile API is used in the mutual authentication flow between\
    \ an Adyen Android or iOS [POS Mobile SDK](https://docs.adyen.com/point-of-sale/ipp-mobile/)\
    \ and the Adyen payments platform.\nThe POS Mobile SDK for Android or iOS devices\
    \ enables businesses to accept in-person payments using a commercial off-the-shelf\
    \ (COTS) device like a phone. For example, Tap to Pay transactions, or transactions\
    \ on a mobile device in combination with a card reader.\n\n## Authentication\n\
    Each request to the POS Mobile API must be signed with an API key. [Generate your\
    \ API key](https://docs.adyen.com/development-resources/api-credentials#generate-api-key)\
    \ in the Customer Area and then set this key to the `X-API-Key` header value.\n\
    You also need to have a [client key](https://docs.adyen.com/development-resources/client-side-authentication/).\
    \ The client key is part of the setup but you won't need to use it in your integration\
    \ later. Therefore, you don't need to specify allowed origins, and you don't need\
    \ to store the key in your system. \nTo access the live endpoints, you need to\
    \ generate a new API key and client key in your live Customer Area.\n## Versioning\n\
    \nThe POS Mobile API handles versioning as part of the endpoint URL.\n\nFor example:\n\
    ```\nhttps://checkout-test.adyen.com/checkout/possdk/v68/sessions\n```\n\n## Going\
    \ live\n\nTo access the live endpoints, you need an API key and client key from\
    \ your live Customer Area.\n\nThe live endpoint URLs contain a prefix which is\
    \ unique to your company account, for example:\n```\nhttps://{PREFIX}-checkout-live.adyenpayments.com/checkout/possdk/v68/sessions\n\
    ```\n\n\n\n\n\n"
  termsOfService: https://www.adyen.com/legal/terms-and-conditions
  contact:
    name: Adyen Developer Experience team
    url: https://github.com/Adyen/adyen-openapi
tags:
- name: General
paths:
  /sessions:
    post:
      tags:
      - General
      summary: Create a communication session
      description: "Establishes a secure communications session between the POS Mobile\
        \ SDK and the Adyen payments platform, through mutual authentication. \nThe\
        \ request sends a setup token that identifies the SDK and the device. The\
        \ response returns a session token that the SDK can use to authenticate responses\
        \ received from the Adyen payments platform.\n>This request applies to **mobile\
        \ in-person** transactions. You cannot use this request to create online payments\
        \ sessions. \n\n"
      x-addedInVersion: '68'
      operationId: post-sessions
      x-sortIndex: 0
      x-methodName: createCommunicationSession
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              createAuthSession:
                $ref: '#/components/examples/post-sessions-createAuthSession'
            schema:
              $ref: '#/components/schemas/CreateSessionRequest'
      responses:
        '201':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/post-sessions-generic-201'
              schema:
                $ref: '#/components/schemas/CreateSessionResponse'
          description: Created - the request has been fulfilled and has resulted in
            one or more new resources being created.
components:
  schemas:
    CreateSessionRequest:
      additionalProperties: false
      properties:
        merchantAccount:
          description: The unique identifier of your merchant account.
          type: string
        setupToken:
          description: "The setup token provided by the POS Mobile SDK. \n- When using\
            \ the Android POS Mobile SDK, obtain the token through the `AuthenticationService.authenticate(setupToken)`\
            \ callback of `AuthenticationService`. \n- When using the iOS POS Mobile\
            \ SDK, obtain the token through the `PaymentServiceDelegate.register(with:)`\
            \ callback of `PaymentServiceDelegate`."
          maxLength: 50000
          type: string
        store:
          description: The unique identifier of the store that you want to process
            transactions for.
          type: string
      required:
      - merchantAccount
      - setupToken
      type: object
    CreateSessionResponse:
      additionalProperties: false
      properties:
        id:
          description: The unique identifier of the session.
          type: string
        installationId:
          description: The unique identifier of the SDK installation. If you create
            the [Terminal API](https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/)
            transaction request on your backend, use this as the `POIID` in the `MessageHeader`
            of the request.
          type: string
        merchantAccount:
          description: The unique identifier of your merchant account.
          type: string
        sdkData:
          description: The data that the SDK uses to authenticate responses from the
            Adyen payments platform. Pass this value to your POS app.
          type: string
        store:
          description: The unique identifier of the store that you want to process
            transactions for.
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: X-API-Key
      type: apiKey
    BasicAuth:
      scheme: basic
      type: http
  examples:
    post-sessions-createAuthSession:
      summary: Create a communication session
      description: Establish a communication session between the POS Mobile SDK and
        the Adyen payments platform
      value:
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        setupToken: SETUP_TOKEN
        store: YOUR_STORE_ID
    post-sessions-generic-201:
      summary: Example response for request 'createAuthSession'
      value:
        id: APP_SESSION_ID
        installationId: INSTALLATION_ID
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        store: YOUR_STORE_ID
        sdkData: SDK_DATA_BLOB
