openapi: 3.1.0
servers:
- url: https://management-live.adyen.com/v1
  description: Live Environment
- url: https://management-test.adyen.com/v1
  description: Test Environment
info:
  title: Payments App API
  description: 'Board and manage the Adyen Payments App on your Android mobile devices.

    ## Authentication

    Each request to the Payments App 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.


    ## Versioning


    Payments App API handles versioning as part of the endpoint URL. For example,
    to send a request to this version of the `/merchants/{merchantId}/generatePaymentsAppBoardingToken`
    endpoint, use:


    ```text

    https://management-test.adyen.com/v1/merchants/{merchantId}/generatePaymentsAppBoardingToken

    ```


    ## Going live


    To access the live endpoints, you need an API key from your live Customer Area.
    Use this API key to make requests to:


    ```text

    https://management-live.adyen.com/v{version}

    ```


    '
  termsOfService: https://www.adyen.com/legal/terms-and-conditions
  contact:
    name: Adyen Developer Experience team
    url: https://github.com/Adyen/adyen-openapi
  version: '1'
  x-timestamp: '2025-02-11T15:31:29Z'
tags:
- name: Payments App
paths:
  /merchants/{merchantId}/generatePaymentsAppBoardingToken:
    post:
      tags:
      - Payments App
      summary: Create a boarding token - merchant level
      description: "Creates a boarding token used to authenticate the installation\
        \ of a Payments App instance on an Android device. The boarding token is created\
        \ for the `boardingRequestToken` of the Payments App for the merchant account\
        \ identified in the path. \n\nTo make this request, your API credential must\
        \ have the following [role](https://docs.adyen.com/development-resources/api-credentials#api-permissions):\n\
        * Adyen Payments App role\n"
      operationId: post-merchants-merchantId-generatePaymentsAppBoardingToken
      parameters:
      - name: merchantId
        in: path
        description: The unique identifier of the merchant account.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BoardingTokenRequest'
        required: true
      responses:
        '200':
          description: OK - the request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoardingTokenResponse'
        '400':
          description: Bad Request - a problem reading or understanding the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '401':
          description: Unauthorized - authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '403':
          description: Forbidden - insufficient permissions to process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '422':
          description: Unprocessable Entity - a request validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '500':
          description: Internal Server Error - the server could not process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
      x-methodName: generatePaymentsAppBoardingTokenForMerchant
      x-sortIndex: 0
  /merchants/{merchantId}/stores/{storeId}/generatePaymentsAppBoardingToken:
    post:
      tags:
      - Payments App
      summary: Create a boarding token - store level
      description: 'Creates a boarding token used to authenticate the installation
        of a Payments App instance on an Android device. The boarding token is created
        for the `boardingRequestToken` of the Payments App for the store identified
        in the path.


        To make this request, your API credential must have the following [role](https://docs.adyen.com/development-resources/api-credentials#api-permissions):

        * Adyen Payments App role

        '
      operationId: post-merchants-merchantId-stores-storeId-generatePaymentsAppBoardingToken
      parameters:
      - name: merchantId
        in: path
        description: The unique identifier of the merchant account.
        required: true
        schema:
          type: string
      - name: storeId
        in: path
        description: The unique identifier of the store.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BoardingTokenRequest'
        required: true
      responses:
        '200':
          description: OK - the request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BoardingTokenResponse'
        '400':
          description: Bad Request - a problem reading or understanding the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '401':
          description: Unauthorized - authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '403':
          description: Forbidden - insufficient permissions to process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '422':
          description: Unprocessable Entity - a request validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '500':
          description: Internal Server Error - the server could not process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
      x-methodName: generatePaymentsAppBoardingTokenForStore
      x-sortIndex: 0
  /merchants/{merchantId}/paymentsApps:
    get:
      tags:
      - Payments App
      summary: Get a list of Payments Apps - merchant level
      description: 'Returns the list of Payments App instances for the merchant account
        identified in the path.


        To make this request, your API credential must have the following [role](https://docs.adyen.com/development-resources/api-credentials#api-permissions):

        * Adyen Payments App role

        '
      operationId: get-merchants-merchantId-paymentsApps
      parameters:
      - name: merchantId
        in: path
        description: The unique identifier of the merchant account.
        required: true
        schema:
          type: string
      - name: statuses
        in: query
        description: "The status of the Payments App. Comma-separated list of one\
          \ or more values. If no value is provided, the list returns all statuses.\
          \ \n\nPossible values:\n\n* **BOARDING**\n\n * **BOARDED**\n\n * **REVOKED**"
        schema:
          type: string
      - name: limit
        in: query
        description: The number of items to return.
        schema:
          maximum: 100
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: The number of items to skip.
        schema:
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: OK - the request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsAppResponse'
        '400':
          description: Bad Request - a problem reading or understanding the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '401':
          description: Unauthorized - authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '403':
          description: Forbidden - insufficient permissions to process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '422':
          description: Unprocessable Entity - a request validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '500':
          description: Internal Server Error - the server could not process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
      x-methodName: listPaymentsAppForMerchant
      x-sortIndex: 0
  /merchants/{merchantId}/stores/{storeId}/paymentsApps:
    get:
      tags:
      - Payments App
      summary: Get a list of Payments Apps - store level
      description: 'Returns the list of Payments App instances for the store identified
        in the path.


        To make this request, your API credential must have the following [role](https://docs.adyen.com/development-resources/api-credentials#api-permissions):

        * Adyen Payments App role

        '
      operationId: get-merchants-merchantId-stores-storeId-paymentsApps
      parameters:
      - name: merchantId
        in: path
        description: The unique identifier of the merchant account.
        required: true
        schema:
          type: string
      - name: storeId
        in: path
        description: The unique identifier of the store.
        required: true
        schema:
          type: string
      - name: statuses
        in: query
        description: "The status of the Payments App. Comma-separated list of one\
          \ or more values. If no value is provided, the list returns all statuses.\
          \ \n\nPossible values:\n\n* **BOARDING**\n\n * **BOARDED**\n\n * **REVOKED**"
        schema:
          type: string
      - name: limit
        in: query
        description: The number of items to return.
        schema:
          maximum: 100
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: The number of items to skip.
        schema:
          type: integer
          format: int64
          default: 0
      responses:
        '200':
          description: OK - the request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsAppResponse'
        '400':
          description: Bad Request - a problem reading or understanding the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '401':
          description: Unauthorized - authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '403':
          description: Forbidden - insufficient permissions to process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '422':
          description: Unprocessable Entity - a request validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '500':
          description: Internal Server Error - the server could not process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
      x-methodName: listPaymentsAppForStore
      x-sortIndex: 0
  /merchants/{merchantId}/paymentsApps/{installationId}/revoke:
    post:
      tags:
      - Payments App
      summary: Revoke Payments App instance authentication
      description: 'Revokes the authentication of the Payments App instance for the
        `installationId` and merchant account identified in the path. This call revokes
        the authentication of the Payments App instance with the `installationId`
        identified in the path for both merchant accounts and stores.


        To make this request, your API credential must have the following [role](https://docs.adyen.com/development-resources/api-credentials#api-permissions):

        * Adyen Payments App role

        '
      operationId: post-merchants-merchantId-paymentsApps-installationId-revoke
      parameters:
      - name: merchantId
        in: path
        description: The unique identifier of the merchant account.
        required: true
        schema:
          type: string
      - name: installationId
        in: path
        description: The unique identifier of the Payments App instance on a device.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK - the request has succeeded.
          content:
            application/json: {}
        '400':
          description: Bad Request - a problem reading or understanding the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '401':
          description: Unauthorized - authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
        '500':
          description: Internal Server Error - the server could not process the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultErrorResponseEntity'
      x-methodName: revokePaymentsApp
      x-sortIndex: 0
components:
  schemas:
    BoardingTokenResponse:
      required:
      - boardingToken
      - installationId
      type: object
      properties:
        boardingToken:
          type: string
          description: The boarding token that allows the Payments App to board.
        installationId:
          type: string
          description: The unique identifier of the Payments App instance.
    DefaultErrorResponseEntity:
      type: object
      properties:
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of
            the problem.
        errorCode:
          type: string
          description: Unique business error code.
        instance:
          type: string
          description: A URI that identifies the specific occurrence of the problem
            if applicable.
        invalidFields:
          type: array
          description: Array of fields with validation errors when applicable.
          items:
            $ref: '#/components/schemas/InvalidField'
        requestId:
          type: string
          description: The unique reference for the request.
        status:
          type: integer
          description: The HTTP status code.
          format: int32
        title:
          type: string
          description: A short, human-readable summary of the problem type.
        type:
          type: string
          description: A URI that identifies the validation error type. It points
            to human-readable documentation for the problem type.
      description: Standardized error response following RFC-7807 format
      externalDocs:
        url: https://www.rfc-editor.org/rfc/rfc7807
    InvalidField:
      required:
      - message
      - name
      - value
      type: object
      properties:
        name:
          type: string
          description: The field that has an invalid value.
        value:
          type: string
          description: The invalid value.
        message:
          type: string
          description: Description of the validation error.
    BoardingTokenRequest:
      required:
      - boardingRequestToken
      type: object
      properties:
        boardingRequestToken:
          type: string
          description: The boardingToken request token.
    PaymentsAppDto:
      required:
      - installationId
      - merchantAccountCode
      - status
      type: object
      properties:
        installationId:
          type: string
          description: The unique identifier of the Payments App instance.
        merchantAccountCode:
          type: string
          description: The account code associated with the Payments App instance.
        merchantStoreCode:
          type: string
          description: The store code associated with the Payments App instance.
        status:
          type: string
          description: The status of the Payments App instance.
    PaymentsAppResponse:
      required:
      - paymentsApps
      type: object
      properties:
        paymentsApps:
          type: array
          description: List of Payments Apps.
          items:
            $ref: '#/components/schemas/PaymentsAppDto'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: X-API-Key
      in: header
    BasicAuth:
      type: http
      scheme: basic
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
