{
   "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\nEach 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.\nYou 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"
            }
         }
      }
   }
}