openapi: 3.1.0
servers:
- url: https://postfmapi-test.adyen.com/postfmapi/terminal/v1
info:
  version: '1'
  x-publicVersion: true
  title: POS Terminal Management API
  description: 'This API provides endpoints for managing your point-of-sale (POS)
    payment terminals. You can use the API to obtain information about a specific
    terminal, retrieve overviews of your terminals and stores, and assign terminals
    to a merchant account or store.


    For more information, refer to [Classic assign terminals](https://docs.adyen.com/point-of-sale/automating-terminal-management/assign-terminals-api/classic-assign-terminals-api/).


    >From January 1, 2025 POS Terminal Management API is deprecated and support stops
    on April 1, 2025. To automate the management of your terminal fleet, use our [Management
    API](https://docs.adyen.com/api-explorer/Management/latest/overview).


    ## Authentication

    Each request to the Terminal Management API must be signed with an API key. For
    this, obtain an API Key from your Customer Area, as described in [How to get the
    API key](https://docs.adyen.com/development-resources/api-credentials#generate-api-key).
    Then set this key to the `X-API-Key` header value, for example:


    ```

    curl

    -H "Content-Type: application/json" \

    -H "X-API-Key: Your_API_key" \

    ...

    ```

    Note that when going live, you need to generate new web service user credentials
    to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).


    ## Roles and permissions

    To use the POS Terminal Management API, you need the **POS Terminal Management
    API role** added to your API credential. Your Adyen contact will set up the roles
    for you.

    ## Versioning

    Terminal Management API supports [versioning](https://docs.adyen.com/development-resources/versioning)
    using a version suffix in the endpoint URL. This suffix has the following format:
    "vXX", where XX is the version number.


    For example:

    ```

    https://postfmapi-test.adyen.com/postfmapi/terminal/v1/getTerminalsUnderAccount

    ```

    When using versioned endpoints, Boolean response values are returned in string
    format: `"true"` or `"false"`.

    If you omit the version from the endpoint URL, Boolean response values are returned
    like this: `true` or `false`.

    ## 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://postfmapi-live.adyen.com/postfmapi/terminal/v1

    ```


    '
  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:
  /assignTerminals:
    post:
      tags:
      - General
      summary: Assign terminals
      description: 'Assigns one or more payment terminals to a merchant account or
        a store. You can also use this endpoint to reassign terminals between merchant
        accounts or stores, and to unassign a terminal and return it to company inventory.


        >From January 1, 2025 POS Terminal Management API is deprecated and support
        stops on April 1, 2025. To automate the management of your terminal fleet,
        use our [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).'
      deprecated: true
      x-deprecatedInVersion: '1'
      x-deprecatedMessage: Use [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).
      operationId: post-assignTerminals
      x-sortIndex: 1
      x-methodName: assignTerminals
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              assignTerminalCompany:
                $ref: '#/components/examples/post-assignTerminals-assignTerminalCompany'
              assignTerminalMerchant:
                $ref: '#/components/examples/post-assignTerminals-assignTerminalMerchant'
              assignTerminalStore:
                $ref: '#/components/examples/post-assignTerminals-assignTerminalStore'
            schema:
              $ref: '#/components/schemas/AssignTerminalsRequest'
      responses:
        '200':
          content:
            application/json:
              examples:
                assignTerminalCompany:
                  $ref: '#/components/examples/post-assignTerminals-assignTerminalCompany-200'
                assignTerminalMerchant:
                  $ref: '#/components/examples/post-assignTerminals-assignTerminalMerchant-200'
                assignTerminalStore:
                  $ref: '#/components/examples/post-assignTerminals-assignTerminalStore-200'
              schema:
                $ref: '#/components/schemas/AssignTerminalsResponse'
          description: OK - the request has succeeded.
        '400':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-400'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Bad Request - a problem reading or understanding the request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unauthorized - authentication required.
        '403':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-403'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Forbidden - insufficient permissions to process the request.
        '422':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-422'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unprocessable Entity - a request validation error.
        '500':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-500'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Internal Server Error - the server could not process the request.
  /findTerminal:
    post:
      tags:
      - General
      summary: Get the account or store of a terminal
      description: 'Returns the company account, merchant account, or store that a
        payment terminal is assigned to.


        >From January 1, 2025 POS Terminal Management API is deprecated and support
        stops on April 1, 2025. To automate the management of your terminal fleet,
        use our [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).'
      deprecated: true
      x-deprecatedInVersion: '1'
      x-deprecatedMessage: Use [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).
      operationId: post-findTerminal
      x-sortIndex: 1
      x-methodName: findTerminal
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              findTerminal:
                $ref: '#/components/examples/post-findTerminal-findTerminal'
            schema:
              $ref: '#/components/schemas/FindTerminalRequest'
      responses:
        '200':
          content:
            application/json:
              examples:
                findTerminal:
                  $ref: '#/components/examples/post-findTerminal-findTerminal-200'
              schema:
                $ref: '#/components/schemas/FindTerminalResponse'
          description: OK - the request has succeeded.
        '400':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-400'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Bad Request - a problem reading or understanding the request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unauthorized - authentication required.
        '403':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-403'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Forbidden - insufficient permissions to process the request.
        '422':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-422'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unprocessable Entity - a request validation error.
        '500':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-500'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Internal Server Error - the server could not process the request.
  /getStoresUnderAccount:
    post:
      tags:
      - General
      summary: Get the stores of an account
      description: 'Returns a list of stores associated with a company account or
        a merchant account, including the status of each store.


        >From January 1, 2025 POS Terminal Management API is deprecated and support
        stops on April 1, 2025. To automate the management of your terminal fleet,
        use our [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).'
      deprecated: true
      x-deprecatedInVersion: '1'
      x-deprecatedMessage: Use [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).
      operationId: post-getStoresUnderAccount
      x-sortIndex: 1
      x-methodName: getStoresUnderAccount
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              getStoresCompany:
                $ref: '#/components/examples/post-getStoresUnderAccount-getStoresCompany'
              getStoresMerchant:
                $ref: '#/components/examples/post-getStoresUnderAccount-getStoresMerchant'
            schema:
              $ref: '#/components/schemas/GetStoresUnderAccountRequest'
      responses:
        '200':
          content:
            application/json:
              examples:
                getStoresCompany:
                  $ref: '#/components/examples/post-getStoresUnderAccount-getStoresCompany-200'
                getStoresMerchant:
                  $ref: '#/components/examples/post-getStoresUnderAccount-getStoresMerchant-200'
              schema:
                $ref: '#/components/schemas/GetStoresUnderAccountResponse'
          description: OK - the request has succeeded.
        '400':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-400'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Bad Request - a problem reading or understanding the request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unauthorized - authentication required.
        '403':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-403'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Forbidden - insufficient permissions to process the request.
        '422':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-422'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unprocessable Entity - a request validation error.
        '500':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-500'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Internal Server Error - the server could not process the request.
  /getTerminalDetails:
    post:
      tags:
      - General
      summary: Get the details of a terminal
      description: 'Returns the details of a payment terminal, including where the
        terminal is assigned to. The response returns the same details that are provided
        in the terminal list in your Customer Area and in the Terminal Fleet report.


        >From January 1, 2025 POS Terminal Management API is deprecated and support
        stops on April 1, 2025. To automate the management of your terminal fleet,
        use our [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).'
      deprecated: true
      x-deprecatedInVersion: '1'
      x-deprecatedMessage: Use [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).
      operationId: post-getTerminalDetails
      x-sortIndex: 1
      x-methodName: getTerminalDetails
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              getTerminalDetails:
                $ref: '#/components/examples/post-getTerminalDetails-getTerminalDetails'
            schema:
              $ref: '#/components/schemas/GetTerminalDetailsRequest'
      responses:
        '200':
          content:
            application/json:
              examples:
                getTerminalDetails:
                  $ref: '#/components/examples/post-getTerminalDetails-getTerminalDetails-200'
              schema:
                $ref: '#/components/schemas/GetTerminalDetailsResponse'
          description: OK - the request has succeeded.
        '400':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-400'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Bad Request - a problem reading or understanding the request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unauthorized - authentication required.
        '403':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-403'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Forbidden - insufficient permissions to process the request.
        '422':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-422'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unprocessable Entity - a request validation error.
        '500':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-500'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Internal Server Error - the server could not process the request.
  /getTerminalsUnderAccount:
    post:
      tags:
      - General
      summary: Get the list of terminals
      description: 'Returns a list of payment terminals associated with a company
        account, merchant account, or store. The response shows whether the terminals
        are in the inventory, or in-store (ready for boarding or already boarded).


        >From January 1, 2025 POS Terminal Management API is deprecated and support
        stops on April 1, 2025. To automate the management of your terminal fleet,
        use our [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).'
      deprecated: true
      x-deprecatedInVersion: '1'
      x-deprecatedMessage: Use [Management API](https://docs.adyen.com/api-explorer/Management/latest/overview).
      operationId: post-getTerminalsUnderAccount
      x-sortIndex: 1
      x-methodName: getTerminalsUnderAccount
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            examples:
              getTerminalsCompany:
                $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsCompany'
              getTerminalsMerchant:
                $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsMerchant'
              getTerminalsStore:
                $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsStore'
            schema:
              $ref: '#/components/schemas/GetTerminalsUnderAccountRequest'
      responses:
        '200':
          content:
            application/json:
              examples:
                getTerminalsCompany:
                  $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsCompany-200'
                getTerminalsMerchant:
                  $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsMerchant-200'
                getTerminalsStore:
                  $ref: '#/components/examples/post-getTerminalsUnderAccount-getTerminalsStore-200'
              schema:
                $ref: '#/components/schemas/GetTerminalsUnderAccountResponse'
          description: OK - the request has succeeded.
        '400':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-400'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Bad Request - a problem reading or understanding the request.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unauthorized - authentication required.
        '403':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-403'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Forbidden - insufficient permissions to process the request.
        '422':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-422'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Unprocessable Entity - a request validation error.
        '500':
          content:
            application/json:
              examples:
                generic:
                  $ref: '#/components/examples/generic-500'
              schema:
                $ref: '#/components/schemas/ServiceError'
          description: Internal Server Error - the server could not process the request.
components:
  schemas:
    Address:
      additionalProperties: false
      properties:
        city:
          type: string
        countryCode:
          type: string
        postalCode:
          type: string
        stateOrProvince:
          type: string
        streetAddress:
          type: string
        streetAddress2:
          type: string
      type: object
    AssignTerminalsRequest:
      additionalProperties: false
      properties:
        companyAccount:
          description: Your company account. To return terminals to the company inventory,
            specify only this parameter and the `terminals`.
          type: string
        merchantAccount:
          description: Name of the merchant account. Specify this parameter to assign
            terminals to this merchant account or to a store under this merchant account.
          type: string
        merchantInventory:
          description: 'Boolean that indicates if you are assigning the terminals
            to the merchant inventory. Do not use when assigning terminals to a store.
            Required when assigning the terminal to a merchant account.


            - Set this to **true** to assign the terminals to the merchant inventory.
            This also means that the terminals cannot be boarded.


            - Set this to **false** to assign the terminals to the merchant account
            as in-store terminals. This makes the terminals ready to be boarded and
            to process payments through the specified merchant account.'
          type: boolean
        store:
          description: The store code of the store that you want to assign the terminals
            to.
          type: string
        terminals:
          description: 'Array containing a list of terminal IDs that you want to assign
            or reassign to the merchant account or store, or that you want to return
            to the company inventory.


            For example, `["V400m-324689776","P400Plus-329127412"]`.'
          items:
            type: string
          type: array
      required:
      - companyAccount
      - terminals
      type: object
    AssignTerminalsResponse:
      additionalProperties: false
      properties:
        results:
          additionalProperties:
            type: string
          description: "Array that returns a list of the terminals, and for each terminal\
            \ the result of assigning it to an account or store.\n\nThe results can\
            \ be: \n\n - `Done`: The terminal has been assigned.\n\n - `AssignmentScheduled`:\
            \ The terminal will be assigned asynschronously.\n\n - `RemoveConfigScheduled`:\
            \ The terminal was previously assigned and boarded. Wait for the terminal\
            \ to synchronize with the Adyen platform. For more information, refer\
            \ to [Reassigning boarded terminals](https://docs.adyen.com/point-of-sale/managing-terminals/assign-terminals#reassign-boarded-terminals).\n\
            \n - `Error`: There was an error when assigning the terminal. "
          type: object
      required:
      - results
      type: object
    FindTerminalRequest:
      additionalProperties: false
      properties:
        terminal:
          description: "The unique terminal ID in the format `[Device model]-[Serial\
            \ number]`. \n\nFor example, **V400m-324689776**."
          type: string
      required:
      - terminal
      type: object
    FindTerminalResponse:
      additionalProperties: false
      properties:
        companyAccount:
          description: The company account that the terminal is associated with. If
            this is the only account level shown in the response, the terminal is
            assigned to the inventory of the company account.
          type: string
        merchantAccount:
          description: The merchant account that the terminal is associated with.
            If the response doesn't contain a `store` the terminal is assigned to
            this merchant account.
          type: string
        merchantInventory:
          description: 'Boolean that indicates if the terminal is assigned to the
            merchant inventory. This is returned when the terminal is assigned to
            a merchant account.


            - If **true**, this indicates that the terminal is in the merchant inventory.
            This also means that the terminal cannot be boarded.


            - If **false**, this indicates that the terminal is assigned to the merchant
            account as an in-store terminal. This means that the terminal is ready
            to be boarded, or is already boarded.'
          type: boolean
        store:
          description: The store code of the store that the terminal is assigned to.
          type: string
        terminal:
          description: The unique terminal ID.
          type: string
      required:
      - companyAccount
      - terminal
      type: object
    GetStoresUnderAccountRequest:
      additionalProperties: false
      properties:
        companyAccount:
          description: The company account. If you only specify this parameter, the
            response includes the stores of all merchant accounts that are associated
            with the company account.
          type: string
        merchantAccount:
          description: The merchant account. With this parameter, the response only
            includes the stores of the specified merchant account.
          type: string
      required:
      - companyAccount
      type: object
    GetStoresUnderAccountResponse:
      additionalProperties: false
      properties:
        stores:
          description: Array that returns a list of all stores for the specified merchant
            account, or for all merchant accounts under the company account.
          items:
            $ref: '#/components/schemas/Store'
          type: array
      type: object
    GetTerminalDetailsRequest:
      additionalProperties: false
      properties:
        terminal:
          description: "The unique terminal ID in the format `[Device model]-[Serial\
            \ number]`. \n\nFor example, **V400m-324689776**."
          type: string
      required:
      - terminal
      type: object
    GetTerminalDetailsResponse:
      additionalProperties: false
      properties:
        bluetoothIp:
          description: The Bluetooth IP address of the terminal.
          type: string
        bluetoothMac:
          description: The Bluetooth MAC address of the terminal.
          type: string
        companyAccount:
          description: The company account that the terminal is associated with. If
            this is the only account level shown in the response, the terminal is
            assigned to the inventory of the company account.
          type: string
        country:
          description: The country where the terminal is used.
          type: string
        deviceModel:
          description: The model name of the terminal.
          type: string
        dhcpEnabled:
          description: Indicates whether assigning IP addresses through a DHCP server
            is enabled on the terminal.
          type: boolean
        displayLabel:
          description: The label shown on the status bar of the display. This label
            (if any) is specified in your Customer Area.
          type: string
        ethernetIp:
          description: The terminal's IP address in your Ethernet network.
          type: string
        ethernetMac:
          description: The terminal's MAC address in your Ethernet network.
          type: string
        firmwareVersion:
          description: The software release currently in use on the terminal.
          type: string
        iccid:
          description: The integrated circuit card identifier (ICCID) of the SIM card
            in the terminal.
          type: string
        lastActivityDateTime:
          description: Date and time of the last activity on the terminal. Not included
            when the last activity was more than 14 days ago.
          format: date-time
          type: string
        lastTransactionDateTime:
          description: Date and time of the last transaction on the terminal. Not
            included when the last transaction was more than 14 days ago.
          format: date-time
          type: string
        linkNegotiation:
          description: "The Ethernet link negotiation that the terminal uses: \n\n\
            - `auto`: Auto-negotiation\n\n- `100full`: 100 Mbps full duplex"
          type: string
        merchantAccount:
          description: The merchant account that the terminal is associated with.
            If the response doesn't contain a `store` the terminal is assigned to
            this merchant account.
          type: string
        merchantInventory:
          description: 'Boolean that indicates if the terminal is assigned to the
            merchant inventory. This is returned when the terminal is assigned to
            a merchant account.


            - If **true**, this indicates that the terminal is in the merchant inventory.
            This also means that the terminal cannot be boarded.


            - If **false**, this indicates that the terminal is assigned to the merchant
            account as an in-store terminal. This means that the terminal is ready
            to be boarded, or is already boarded.'
          type: boolean
        permanentTerminalId:
          description: The permanent terminal ID.
          type: string
        serialNumber:
          description: The serial number of the terminal.
          type: string
        simStatus:
          description: 'On a terminal that supports 3G or 4G connectivity, indicates
            the status of the SIM card in the terminal: ACTIVE or INVENTORY.'
          type: string
        store:
          description: The store code of the store that the terminal is assigned to.
          type: string
        storeDetails:
          description: The store that the terminal is assigned to.
          $ref: '#/components/schemas/Store'
        terminal:
          description: The unique terminal ID.
          type: string
        terminalStatus:
          description: "The status of the terminal: \n\n- `OnlineToday`, `OnlineLast1Day`,\
            \ `OnlineLast2Days` etcetera to `OnlineLast7Days`: Indicates when in the\
            \ past week the terminal was last online. \n\n- `SwitchedOff`: Indicates\
            \ it was more than a week ago that the terminal was last online. \n\n\
            - `ReAssignToInventoryPending`, `ReAssignToStorePending`, `ReAssignToMerchantInventoryPending`:\
            \ Indicates the terminal is scheduled to be reassigned."
          enum:
          - OnlineLast1Day
          - OnlineLast2Days
          - OnlineLast3Days
          - OnlineLast4Days
          - OnlineLast5Days
          - OnlineLast6Days
          - OnlineLast7Days
          - OnlineToday
          - ReAssignToInventoryPending
          - ReAssignToMerchantInventoryPending
          - ReAssignToStorePending
          - SwitchedOff
          type: string
        wifiIp:
          description: The terminal's IP address in your Wi-Fi network.
          type: string
        wifiMac:
          description: The terminal's MAC address in your Wi-Fi network.
          type: string
      required:
      - companyAccount
      - terminal
      type: object
    GetTerminalsUnderAccountRequest:
      additionalProperties: false
      properties:
        companyAccount:
          description: Your company account. If you only specify this parameter, the
            response includes all terminals at all account levels.
          type: string
        merchantAccount:
          description: The merchant account. This is required if you are retrieving
            the terminals assigned to a store.If you don't specify a `store` the response
            includes the terminals assigned to the specified merchant account and
            the terminals assigned to the stores under this merchant account.
          type: string
        store:
          description: The store code of the store. With this parameter, the response
            only includes the terminals assigned to the specified store.
          type: string
      required:
      - companyAccount
      type: object
    GetTerminalsUnderAccountResponse:
      additionalProperties: false
      properties:
        companyAccount:
          description: Your company account.
          type: string
        inventoryTerminals:
          description: Array that returns a list of all terminals that are in the
            inventory of the company account.
          items:
            type: string
          type: array
        merchantAccounts:
          description: Array that returns a list of all merchant accounts belonging
            to the company account.
          items:
            $ref: '#/components/schemas/MerchantAccount'
          type: array
      required:
      - companyAccount
      type: object
    MerchantAccount:
      additionalProperties: false
      properties:
        inStoreTerminals:
          description: List of terminals assigned to this merchant account as in-store
            terminals. This means that the terminal is ready to be boarded, or is
            already boarded.
          items:
            type: string
          type: array
        inventoryTerminals:
          description: List of terminals assigned to the inventory of this merchant
            account.
          items:
            type: string
          type: array
        merchantAccount:
          description: The merchant account.
          type: string
        stores:
          description: Array of stores under this merchant account.
          items:
            $ref: '#/components/schemas/Store'
          type: array
      required:
      - merchantAccount
      type: object
    ServiceError:
      additionalProperties: false
      properties:
        errorCode:
          description: The error code mapped to the error message.
          type: string
        errorType:
          description: The category of the error.
          type: string
        message:
          description: A short explanation of the issue.
          type: string
        pspReference:
          description: The PSP reference of the payment.
          type: string
        status:
          description: The HTTP response status.
          format: int32
          type: integer
      type: object
    Store:
      additionalProperties: false
      properties:
        address:
          description: The address of the store.
          $ref: '#/components/schemas/Address'
        description:
          description: The description of the store.
          type: string
        inStoreTerminals:
          description: The list of terminals assigned to the store.
          items:
            type: string
          type: array
        merchantAccountCode:
          description: The code of the merchant account.
          type: string
        status:
          description: "The status of the store:\n\n- `PreActive`: the store has been\
            \ created, but not yet activated. \n\n- `Active`: the store has been activated.\
            \ This means you can process payments for this store. \n\n- `Inactive`:\
            \ the store is currently not active. \n\n- `InactiveWithModifications`:\
            \ the store is currently not active, but payment modifications such as\
            \ refunds are possible. \n\n- `Closed`: the store has been closed. "
          type: string
        store:
          description: The code of the store.
          type: string
      required:
      - store
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: X-API-Key
      type: apiKey
    BasicAuth:
      scheme: basic
      type: http
  examples:
    generic-400:
      summary: Response code 400. Bad request.
      value:
        status: 400
        errorCode: '702'
        message: Problem reading or understanding the request.
        errorType: validation
    generic-403:
      summary: Response code 403. Forbidden.
      value:
        status: 403
        errorCode: '010'
        message: Insufficient permissions to process the request.
        errorType: security
    generic-422:
      summary: Response code 422. Unprocessable entity.
      value:
        status: 422
        errorCode: '901'
        message: Request validation error.
        errorType: validation
    generic-500:
      summary: Response code 500. Internal server error.
      value:
        status: 500
        errorCode: '000'
        message: The server could not process the request.
        errorType: internal
    post-assignTerminals-assignTerminalCompany:
      summary: Assign a terminal to the company inventory
      description: Assign one or more terminals to the inventory of the company account.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        terminals:
        - P400Plus-275479597
    post-assignTerminals-assignTerminalCompany-200:
      summary: Example response for request 'assignTerminalCompany'
      value:
        results:
          P400Plus-275479597: RemoveConfigScheduled
    post-assignTerminals-assignTerminalMerchant:
      summary: Assign a terminal to the inventory of a merchant account
      description: Assign one or more terminals to the inventory of the merchant account.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        merchantInventory: true
        terminals:
        - P400Plus-275479597
    post-assignTerminals-assignTerminalMerchant-200:
      summary: Example response for request 'assignTerminalMerchant'
      value:
        results:
          P400Plus-275479597: RemoveConfigScheduled
    post-assignTerminals-assignTerminalStore:
      summary: Assign a terminal to a store
      description: Assign one or more terminals to the specified store.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        store: YOUR_STORE
        terminals:
        - P400Plus-275479597
    post-assignTerminals-assignTerminalStore-200:
      summary: Example response for request 'assignTerminalStore'
      value:
        results:
          P400Plus-275479597: RemoveConfigScheduled
    post-findTerminal-findTerminal:
      summary: Find where a terminal is assigned to
      description: Returns the company account, merchant account, or store that the
        payment terminal is assigned to.
      value:
        terminal: M400-401972715
    post-findTerminal-findTerminal-200:
      summary: Example response for request 'findTerminal'
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        merchantInventory: false
        store: YOUR_STORE
        terminal: M400-401972715
    post-getStoresUnderAccount-getStoresCompany:
      summary: Get all the stores under a company
      description: Returns a list of all stores associated with the specified company
        account.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
    post-getStoresUnderAccount-getStoresCompany-200:
      summary: Example response for request 'getStoresCompany'
      value:
        stores:
        - store: YOUR_STORE
          description: YOUR_STORE
          address:
            city: The City
            countryCode: NL
            postalCode: '1234'
            streetAddress: The Street
          status: Active
          merchantAccountCode: YOUR_MERCHANT_ACCOUNT
    post-getStoresUnderAccount-getStoresMerchant:
      summary: Get all the stores under a merchant account
      description: Returns a list of all stores associated with the specified merchant
        account.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
    post-getStoresUnderAccount-getStoresMerchant-200:
      summary: Example response for request 'getStoresMerchant'
      value:
        stores:
        - store: YOUR_STORE
          description: YOUR_STORE
          address:
            city: The City
            countryCode: NL
            postalCode: '1234'
            streetAddress: The Street
          status: Active
          merchantAccountCode: YOUR_MERCHANT_ACCOUNT
    post-getTerminalDetails-getTerminalDetails:
      summary: Get information about a specific terminal
      description: Returns the details of a payment terminal, including where the
        terminal is assigned to.
      value:
        terminal: M400-401972715
    post-getTerminalDetails-getTerminalDetails-200:
      summary: Example response for request 'getTerminalDetails'
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        merchantInventory: false
        store: YOUR_STORE
        terminal: M400-401972715
        deviceModel: M400
        serialNumber: 401-972-715
        permanentTerminalId: '88912016'
        terminalStatus: SwitchedOff
        firmwareVersion: Verifone_VOS 1.57.6
        country: NETHERLANDS
        storeDetails:
          store: YOUR_STORE
          description: TestStore
          address:
            city: The City
            countryCode: NL
            postalCode: '1234'
            streetAddress: The Street
        ethernetMac: 60:c7:98:5a:69:cd
        ethernetIp: 192.168.2.11
        wifiMac: c4:ac:59:47:f3:71
        wifiIp: 192.168.2.12
        dhcpEnabled: false
    post-getTerminalsUnderAccount-getTerminalsCompany:
      summary: Get all the terminals under a company account
      description: Returns a list of terminals associated with the company, indicating
        where each terminal is assigned to.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
    post-getTerminalsUnderAccount-getTerminalsCompany-200:
      summary: Example response for request 'getTerminalsCompany'
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccounts:
        - merchantAccount: YOUR_MERCHANT_ACCOUNT
          inStoreTerminals:
          - P400Plus-275479597
          stores:
          - store: YOUR_STORE
            inStoreTerminals:
            - M400-401972715
    post-getTerminalsUnderAccount-getTerminalsMerchant:
      summary: Get all the terminals under a merchant account
      description: Returns a list of terminals associated with the merchant account,
        indicating where each terminal is assigned to.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
    post-getTerminalsUnderAccount-getTerminalsMerchant-200:
      summary: Example response for request 'getTerminalsMerchant'
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccounts:
        - merchantAccount: YOUR_MERCHANT_ACCOUNT
          inStoreTerminals:
          - P400Plus-275479597
          stores:
          - store: YOUR_STORE
            inStoreTerminals:
            - M400-401972715
    post-getTerminalsUnderAccount-getTerminalsStore:
      summary: Get all the terminals assigned to a store
      description: Returns a list of terminals assigned to the specified store.
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccount: YOUR_MERCHANT_ACCOUNT
        store: YOUR_STORE
    post-getTerminalsUnderAccount-getTerminalsStore-200:
      summary: Example response for request 'getTerminalsStore'
      value:
        companyAccount: YOUR_COMPANY_ACCOUNT
        merchantAccounts:
        - merchantAccount: YOUR_MERCHANT_ACCOUNT
          stores:
          - store: YOUR_STORE
            inStoreTerminals:
            - M400-401972715
