Diebold Nixdorf Device API

The Device API API from Diebold Nixdorf — 2 operation(s) for device api.

Operations 5

GET /{merchantId}/devices Get all devices of a certain merchant #
POST /device/{merchantId}/{terminalId} Create a payment device such as a POS terminal or a mobile device #
PUT /device/{merchantId}/{terminalId} Update a payment device such as a POS terminal or a mobile device #
GET /device/{merchantId}/{terminalId} Get device info of a payment device such as a POS terminal or a mobile device #
DELETE /device/{merchantId}/{terminalId} Delete a payment device such as a POS terminal or a mobile device #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/diebold-device-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

diebold-device-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DN Payment Initiation Device API
  description: 'Public Payment Initiation API (PI-API) of Diebold Nixdorf to access the

    Transaction Middleware.'
  version: 1.9.11
  contact:
    email: ronald.schmieder@dieboldnixdorf.com
servers:
- url: http://localhost:8080/pi-api/v1
- url: https://localhost:8080/pi-api/v1
security:
- bearerAuth: []
- openId: []
tags:
- name: Device API
paths:
  /{merchantId}/devices:
    get:
      tags:
      - Device API
      operationId: getDevices
      summary: Get all devices of a certain merchant
      description: Used to retrieve all payment devices of a certain merchant.
      parameters:
      - $ref: '#/components/parameters/PI-API-Merchant-ID'
      - $ref: '#/components/parameters/X-Request-ID-Param'
      - $ref: '#/components/parameters/TimestampParam'
      - $ref: '#/components/parameters/PSU-IP-AddressParam'
      - $ref: '#/components/parameters/PSU-User-AgentParam'
      - $ref: '#/components/parameters/PSU-GEO-LocationParam'
      - $ref: '#/components/parameters/SessionKeyParam'
      - $ref: '#/components/parameters/CredentialsTypeParam'
      - $ref: '#/components/parameters/CredentialsParam'
      - $ref: '#/components/parameters/RetailUnitParam'
      responses:
        '200':
          description: 'In case of a successful call, the PI-API device data are returned.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevicesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/NotFound404'
        '500':
          $ref: '#/components/responses/InternalServerError500'
  /device/{merchantId}/{terminalId}:
    post:
      tags:
      - Device API
      summary: Create a payment device such as a POS terminal or a mobile device
      description: Used to create and/or initialize a payment device.
      operationId: initializeDevice
      parameters:
      - $ref: '#/components/parameters/PI-API-Merchant-ID'
      - $ref: '#/components/parameters/Terminal-ID'
      - $ref: '#/components/parameters/X-Request-ID-Param'
      - $ref: '#/components/parameters/TimestampParam'
      - $ref: '#/components/parameters/PSU-IP-AddressParam'
      - $ref: '#/components/parameters/PSU-User-AgentParam'
      - $ref: '#/components/parameters/PSU-GEO-LocationParam'
      - $ref: '#/components/parameters/SessionKeyParam'
      - $ref: '#/components/parameters/CredentialsTypeParam'
      - $ref: '#/components/parameters/CredentialsParam'
      - $ref: '#/components/parameters/StoreIdParam'
      - $ref: '#/components/parameters/CashierIdParam'
      - $ref: '#/components/parameters/PaymentProviderParam'
      - $ref: '#/components/parameters/RetailUnitParam'
      responses:
        '201':
          description: 'In case of a successful call, a PI-API a http status code 201 is returned.

            '
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/NotFound404'
        '500':
          $ref: '#/components/responses/InternalServerError500'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDeviceRequest'
        description: The request
        required: true
    put:
      tags:
      - Device API
      operationId: updateDevice
      summary: Update a payment device such as a POS terminal or a mobile device
      description: Used to get, update or delete a payment device.
      parameters:
      - $ref: '#/components/parameters/PI-API-Merchant-ID'
      - $ref: '#/components/parameters/Terminal-ID'
      - $ref: '#/components/parameters/X-Request-ID-Param'
      - $ref: '#/components/parameters/TimestampParam'
      - $ref: '#/components/parameters/PSU-IP-AddressParam'
      - $ref: '#/components/parameters/PSU-User-AgentParam'
      - $ref: '#/components/parameters/PSU-GEO-LocationParam'
      - $ref: '#/components/parameters/SessionKeyParam'
      - $ref: '#/components/parameters/CredentialsTypeParam'
      - $ref: '#/components/parameters/CredentialsParam'
      - $ref: '#/components/parameters/StoreIdParam'
      - $ref: '#/components/parameters/CashierIdParam'
      - $ref: '#/components/parameters/PaymentProviderParam'
      - $ref: '#/components/parameters/RetailUnitParam'
      responses:
        '200':
          description: 'In case of a successful call, a http status code 200 is returned.

            '
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/NotFound404'
        '500':
          $ref: '#/components/responses/InternalServerError500'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDeviceRequest'
        description: The request
        required: true
    get:
      tags:
      - Device API
      operationId: getDevice
      summary: Get device info of a payment device such as a POS terminal or a mobile device
      description: Used to create and/or initialize a payment device.
      parameters:
      - $ref: '#/components/parameters/PI-API-Merchant-ID'
      - $ref: '#/components/parameters/Terminal-ID'
      - $ref: '#/components/parameters/X-Request-ID-Param'
      - $ref: '#/components/parameters/TimestampParam'
      - $ref: '#/components/parameters/PSU-IP-AddressParam'
      - $ref: '#/components/parameters/PSU-User-AgentParam'
      - $ref: '#/components/parameters/PSU-GEO-LocationParam'
      - $ref: '#/components/parameters/SessionKeyParam'
      - $ref: '#/components/parameters/CredentialsTypeParam'
      - $ref: '#/components/parameters/CredentialsParam'
      - $ref: '#/components/parameters/StoreIdParam'
      - $ref: '#/components/parameters/CashierIdParam'
      - $ref: '#/components/parameters/PaymentProviderParam'
      - $ref: '#/components/parameters/RetailUnitParam'
      responses:
        '200':
          description: 'In case of a successful call, the PI-API device data are returned.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceInfoResponse'
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/NotFound404'
        '500':
          $ref: '#/components/responses/InternalServerError500'
    delete:
      tags:
      - Device API
      operationId: deleteDevice
      summary: Delete a payment device such as a POS terminal or a mobile device
      description: Used to create and/or initialize a payment device.
      parameters:
      - $ref: '#/components/parameters/PI-API-Merchant-ID'
      - $ref: '#/components/parameters/Terminal-ID'
      - $ref: '#/components/parameters/X-Request-ID-Param'
      - $ref: '#/components/parameters/TimestampParam'
      - $ref: '#/components/parameters/PSU-IP-AddressParam'
      - $ref: '#/components/parameters/PSU-User-AgentParam'
      - $ref: '#/components/parameters/PSU-GEO-LocationParam'
      - $ref: '#/components/parameters/SessionKeyParam'
      - $ref: '#/components/parameters/CredentialsTypeParam'
      - $ref: '#/components/parameters/CredentialsParam'
      - $ref: '#/components/parameters/StoreIdParam'
      - $ref: '#/components/parameters/CashierIdParam'
      - $ref: '#/components/parameters/PaymentProviderParam'
      - $ref: '#/components/parameters/RetailUnitParam'
      responses:
        '200':
          description: 'In case of a successful call, a http status code 200 is returned.

            '
        '401':
          $ref: '#/components/responses/Unauthorized401'
        '404':
          $ref: '#/components/responses/NotFound404'
        '500':
          $ref: '#/components/responses/InternalServerError500'
components:
  parameters:
    PSU-User-AgentParam:
      name: PSU-User-Agent
      in: header
      required: false
      description: 'The user agent string of the client.

        '
      schema:
        type: string
        minLength: 5
        maxLength: 255
      example: Mozilla/5.0(IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko
    SessionKeyParam:
      name: SessionKey
      in: header
      required: true
      description: "<p>The <b>SessionKey</b> parameter contains an base64 encoded AES-128bit\n(AES128) key, which is used to encrypt the <b>AuthorizationType</b> and\n<b>AuthorizationToken</b>.</p> \n\n<p>Moreover, where appropriate, other parts of the request and/or response message are encrypted too, such as\n'buyerIdentityToken' in the 'UserAuthorizationData' of a\nInitiateCardlessPayment request.</p> \n\n<p>If the <b>SessionKey</b> is an <b>empty string</b> (with a zero length), it is assumed, that the\n<b>AuthorizationType</b> and <b>AuthorizationToken</b> are transmitted\n<font color='red'>unencrypted, which is by no means recommended and -\nwhenever possible - should be avoided</font>.</p>\n\n<p>If a part of a request or response message is or can be encrypted, this is explicitly\nindicated in the description.</p> \n\n<p>The key is separated from the InitializationVector using a '-' (Minus sign/Separator) like 'AESKey InitializationVector'.\n"
      schema:
        type: string
      example: QmFzZTY0IGVuY29kaW5nIHNjaGVtZXMgYXJlIGNvbW1vbmx5VGhlIHBhcnRpY3VsYXIgY2hvaWNlIA==
    CashierIdParam:
      name: CashierId
      in: header
      required: true
      description: "<p>An unique identifier of a cashier - a natural person - within the\nmerchant's eco-system.</p> \n"
      schema:
        type: string
        minLength: 4
        maxLength: 256
      example: cashier1
    PI-API-Merchant-ID:
      name: merchantId
      in: path
      required: true
      description: 'ID of the merchant in the PI API.

        '
      schema:
        type: string
        minLength: 1
        maxLength: 64
      example: TM-Merchant-ID
    StoreIdParam:
      name: StoreId
      in: header
      required: true
      description: '<p>An unique identifier of store within the merchant''s eco-system.</p>

        '
      schema:
        type: string
        minLength: 4
        maxLength: 256
      example: '1234'
    RetailUnitParam:
      name: RetailUnit
      in: header
      required: false
      description: 'The ID of the retail unit. ISO-3166 2 letter country code as a possibility, e.g. "se" for Sweden, "de" for Germany and "us" for USA.

        '
      schema:
        type: string
        minLength: 2
        maxLength: 10
      example: se
    TimestampParam:
      name: Timestamp
      in: header
      required: true
      description: 'The timestamp when the PI-API call was initiated by the PI-API client.

        The format is defined by RFC3339 date-time.<br>Please see:

        <a href="https://tools.ietf.org/html/rfc3339">Date and Time on the Internet: Timestamps</a>

        '
      schema:
        type: string
        format: date-time
      example: '2017-10-02T15:34:12.345Z'
    PaymentProviderParam:
      name: PaymentProvider
      in: header
      required: true
      schema:
        $ref: '#/components/schemas/PaymentProvider'
      example: HUMM
    CredentialsParam:
      name: AuthorizationToken
      in: header
      required: true
      description: "<p>The contents and usage of the <b>AuthorizationToken</b> header field\ndepends on the authentication type as defined by the\n<b>AuthorizationType</b> header field.</p> \n\n<p>When using the <b>OAUTH</b> approach, consequent API requests are being authorized using the\nrespective OAuth Access Token. The access token is sent to the API using the AuthorizationToken header\nfield and the BEARER authentication schema as defined in RFC 6750.\n<br><b>Example:</b> 'Bearer SlAV32hkKG'</p> \n\n<p>If <b>USERNAME_PASSWORD</b> is used as AuthorizationType a JSON object\nlike: { 'username': 'Tester', 'password': 'thePassword' } is expected.\nThe given user must have the an appropriate group to access the system\nusing the CHANNEL_REST. Please see the TM documentation how to create\nand assign right, roles and groups to user.</p>\n"
      schema:
        type: string
        minLength: 4
        maxLength: 256
    CredentialsTypeParam:
      name: AuthorizationType
      in: header
      required: true
      description: 'AuthorizationType describes the kind of CredentialsParam. Based on

        the AuthorizationType the AuthorizationToken is evaluated and

        checked.

        '
      schema:
        type: string
        enum:
        - OAUTH
        - USERNAME_PASSWORD
      example: USERNAME_PASSWORD
    PSU-IP-AddressParam:
      name: PSU-IP-Address
      in: header
      required: false
      description: The IP-Address of the client.
      schema:
        type: string
        minLength: 8
        maxLength: 48
      example: 192.168.8.1
    PSU-GEO-LocationParam:
      name: PSU-GEO-Location
      in: header
      required: false
      description: 'The (optional) GEO location of the client, if available.

        '
      schema:
        type: string
        minLength: 8
        maxLength: 255
        pattern: GEO:(-?\d+(\.\d+)?),\s*(-?\d+(\.\d+)?)
      example: GEO:52.506931,13.144558
    Terminal-ID:
      name: terminalId
      in: path
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 64
      description: 'UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available.

        UUID identifies either a device or a device dependant application installation.

        In case of an installation identification this ID need to be unaltered until removal from device.

        '
      example: terminal1
    X-Request-ID-Param:
      name: X-Request-ID
      in: header
      required: true
      description: 'ID of the request, <b>unique to the call</b>, as determined by the

        initiating party.<br> he X-Request-ID is used to identify a certain

        PI-API call uniquely.

        '
      schema:
        type: string
        minLength: 6
        maxLength: 40
      example: 99391c7e-ad88-49ec-a2ad-99ddcb1f7721
  responses:
    InternalServerError500:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized401:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound404:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    KeyValuePair:
      description: A key value pair to store/retrieve a key and a value as strings in a generic way. Used in some API calls/objects.
      type: object
      required:
      - key
      - value
      properties:
        key:
          description: A unique key which identifies a certain value.
          type: string
          minimum: 1
          maximum: 255
          example: this-is-a-sample-key
        value:
          description: 'The assigned value of the key. It contains a maximum of 2MB data.

            '
          type: string
          minLength: 0
          maxLength: 2097152
          example: this-is-a-sample-value
    DeviceData:
      type: object
      description: This data contains all information about an external devices such as an POS or mobile device
      required:
      - softwareVersion
      - vendor
      properties:
        externalDeviceIdentifier:
          type: string
          minLength: 3
          maxLength: 255
          description: A identifier which identifies the device in an/the external eco system.
          example: 60480F44-413E-47F8-85AF-8B233A9A1680
        softwareVersion:
          type: string
          minLength: 3
          maxLength: 255
          description: The software verion of that device.
          example: 'Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020'
        vendor:
          type: string
          minLength: 1
          maxLength: 255
          description: The vendor of that device.
          example: DieboldNixdorf
        addinitonalData:
          description: 'A list of addtional properties.

            '
          type: array
          items:
            $ref: '#/components/schemas/KeyValuePair'
    DeviceInfoResponse:
      type: object
      required:
      - deviceData
      description: 'The Returns the device info.

        '
      properties:
        deviceData:
          $ref: '#/components/schemas/DeviceData'
    Error:
      description: "The error property is optional. \nIt is set only if an error has been detected.\n"
      type: object
      properties:
        message:
          description: An optional, additional message which describes the error.
          type: string
          maxLength: 256
          example: 'Internal server error. A database connection could not be

            established.

            '
        paymentProviderErrorCode:
          description: An error code as outlined in the PI-API documentation.
          type: string
          example: SysErr#765
        errorCode:
          description: An error code as outlined in the PI-API documentation.
          type: string
          example: HOST_CANCEL
        transactionId:
          $ref: '#/components/schemas/TransactionIdentifier'
    DevicesResponse:
      type: object
      required:
      - devices
      description: 'The Transaction Response contains an array with links to the

        transactions

        '
      properties:
        devices:
          type: array
          items:
            $ref: '#/components/schemas/DeviceData'
    UpdateDeviceRequest:
      type: object
      required:
      - deviceData
      description: 'This request creates and initializes an external device such as a mobile device or a POS terminal.

        '
      properties:
        deviceData:
          $ref: '#/components/schemas/DeviceData'
    PaymentProvider:
      type: string
      description: 'The identifier of the payment provider.<br>

        The payment provider ''TM'' indicates, that the transaction middleware server - aka. the TM server - should decide

        which payment provider has to be used at the end, e.g. based on the card data.

        '
      enum:
      - AGOS
      - ALIPAY
      - APPLEPAY
      - BLUECODE
      - DANISH_MOBILEPAY
      - GOOGLEPAY
      - HUMM
      - IKEAREFUNDCARD
      - RAIFFEISEN
      - SATISPAY
      - SEPAINSTANTPAYMENT
      - SIMULATOR
      - SWISH
      - SWISHMCOMMERCE
      - SWISSBILLING
      - TM
      - VIPPS
      - VISADIRECT
      - WECHAT
      - WOSAIPAY
      example: ALIPAY
    CreateDeviceRequest:
      type: object
      required:
      - deviceData
      description: 'This request creates and initializes an external device such as a mobile device or a POS terminal.

        '
      properties:
        deviceData:
          $ref: '#/components/schemas/DeviceData'
    TransactionIdentifier:
      type: string
      minLength: 6
      maxLength: 40
      description: 'A unique identifier of a transaction in the PI-API backend domain.

        <br><br> This transaction number must not be confused with the

        merchantTransactionId. <br><br> This PI-API transaction number is

        generated by the PI-API server and is unique within the whole PI-API

        server domain.  <br>

        '
      example: '434354659863230244'
  securitySchemes:
    bearerAuth:
      type: http
      description: 'When using the bearer authentication method an access token has to be provided in the HTTP authorization header

        '
      scheme: bearer
    openId:
      type: openIdConnect
      openIdConnectUrl: https://login.microsoftonline.com/52846f0f-bc96-4a36-939b-f4d04bb473a0/v2.0/.well-known/openid-configuration
externalDocs:
  description: Find out more about Swagger
  url: https://swagger.io