openapi: 3.0.3
info:
title: DN Secure Business Processing API
description: 'A Diebold Nixdorf API designed to invoke predefinded and configurable business process flows using a single
request.
__A few words about authorization:__
It is It is assumed that the authorization
at the API takes place via an external openID authorization provider __configured in the OCM configuration__ (Owner: OpenId.OpenIDConnect).
The API expects the openID __access token__ in the http header field __Authorization__ and the openID __ID token__ in
the http header field __id_token__. The tokens can also be set in/as query parameters. The access and id tokens are checked
using the configured external openID authorization provider.
Beside this http basic authorization is also possible, but not recommend for production environments.'
version: 3.1.0
contact:
name: Diebold Nixdorf
email: info.de@dieboldnixdorf.com
externalDocs:
description: Find out more about Swagger
url: http://swagger.io
tags:
- name: Transaction Middleware
externalDocs:
description: Transaction Middleware
url: https://www.dieboldnixdorf.com/en-us/retail/portfolio/software/transaction-engine
servers:
- description: SwaggerHub API Auto Mocking
url: https://virtserver.swaggerhub.com/Diebold-Nixdorf/dn_pledge_api/3.1.0
- url: http://localhost:8080/tm-sbp-api/v1
description: Transaction Middleware 3.1+
- url: https://localhost:8080/tm-sbp-api/v1
description: Transaction Middleware 3.1+
paths:
/getEcKey:
get:
tags:
- SBP API
summary: Returns the public key (ECIES) of the server system.
description: 'The client must use the __ECIES__ encryption scheme to communicate in a secured way with the server. The
__/getEcKey__ endpoint can be used to obtain the server''s public EC key in PEM format.
This key is used to encrypt request parameters and/or the request body.'
operationId: getEcKey
responses:
'200':
$ref: '#/components/responses/getEcKeyResponse'
'404':
$ref: '#/components/responses/notFoundResponse'
default:
$ref: '#/components/responses/defaultResponse'
/executeProcess:
post:
tags:
- SBP API
summary: Get a configurable pledge from the server.
description: 'The /executeProcess API endpoint can be used to retrieve properties from the server depending on the specified
PledgeType and a value called ''secret'' in the ExecuteProcessRequestPayload.
The supported process types are enumerated in the ProcessType enum in the components section of the API specification.
For the ProcessType ''CONF'' a configurable flow can be triggered on the server side to retrieve the desired data.
The request property ''secret'' acts as a search key to get the data associated with the flow. __REMARK__ Please put
the openId token in a http header field named "openIdToken"
'
operationId: executeProcess
parameters:
- $ref: '#/components/parameters/cryptoParamsParam'
- $ref: '#/components/parameters/processIdentifierParam'
requestBody:
$ref: '#/components/requestBodies/executeProcessRequestBody'
responses:
'200':
$ref: '#/components/responses/executeProcessResponse'
'400':
$ref: '#/components/responses/badRequestResponse'
'401':
$ref: '#/components/responses/unauthorizedResponse'
'404':
$ref: '#/components/responses/notFoundResponse'
default:
$ref: '#/components/responses/defaultResponse'
components:
securitySchemes:
basicAuth:
description: 'A basic authentication method where the username and a password hash are provided in the Authentication
header. The username and password string must be base64 encoded and align to the pattern :.
'
type: http
scheme: basic
parameters:
cryptoParamsParam:
name: Dn-Tm-Crypto-Params
in: header
required: true
description: "The __CryptoParams__ schema should be filled with the clients public key (EC) and set as value for this\
\ header parameter as stringified JSON. An example:\n__Using ECIES:__\n\n cryptoParams: {\n \"ecPublicKey\"\
:{\n \"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHPMaBu6d0BR6QFw3VKwPipuAdDPL\\\
nG36/aoyTx7iTK1xgoi7X9aMmT1x3Qh1+S1zVhBh2LDDEljHkkVyHrl4bOg==\\n-----END PUBLIC KEY-----\\n\"\n }\n\
\ }\n\nThe property __ecPublicKey__ is used to send the client's public key to the server in order to create\
\ encrypted responses."
schema:
type: string
minLength: 1
processIdentifierParam:
name: Dn-Tm-Process-Identifier
in: header
required: true
description: The process identifier is used to find the necessary business case data from the OCM configuration
schema:
type: string
minLength: 1
requestBodies:
executeProcessRequestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteProcessRequest'
description: 'The request body used for /executeProcess requests
'
required: true
responses:
getEcKeyResponse:
description: Returns the API's public EC key as PEM.
content:
application/json:
schema:
$ref: '#/components/schemas/GetEcKeyResponse'
executeProcessResponse:
description: Holds the response CryptoEnvelope
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteProcessResponse'
authErrorResponse:
description: The authentication failed. A redirect URL is returned where the client can get a new valid open ID Connect
id_token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
unauthorizedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
badRequestResponse:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
notFoundResponse:
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
defaultResponse:
description: Unexpected error. Please see/inspect 'code' and 'message' properties of the error for more/detailed informations.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
description: The error property is optional. It is set only if an error has been detected.
required:
- code
properties:
code:
description: An error code.
type: integer
format: int32
minimum: 0
example: 850004
message:
description: An optional, additional message which describes the error.
type: string
maxLength: 255
example: Internal server error. A database connection could not be established.
ResponseBase:
description: 'The basic response object used to transmit the response status and errors
'
type: object
required:
- success
properties:
success:
description: 'Returns True or False to indicate the success of the API call.
The The error property is optional.
It is set only if an error has been detected.
'
type: boolean
example: true
error:
$ref: '#/components/schemas/Error'
CryptoParams:
type: object
properties:
ecPublicKey:
$ref: '#/components/schemas/EcPublicKey'
CryptoEnvelope:
type: object
required:
- payload
description: Object holding a cryptographically secured request/response properties.
properties:
payload:
type: string
minLength: 1
example: BB20WIJRTz/T9vkGhETgpehzc6dDoioQ9DJV4lRA6ICaWwLPLDE+
EcPublicKey:
allOf:
- $ref: '#/components/schemas/PublicKeyPem'
PublicKeyPem:
description: A holder object for PEM formatted public keys
type: object
required:
- publicKeyPem
properties:
publicKeyPem:
type: string
minLength: 1
example: '"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt0 GMNz1Geam/Jw4lbIoPcspDbWt2\n84U+yYZqnqMIa5gQZyJNsTRdvDfb2jdP3MUVBJM
UoOeuGTF/cJy4uQ587w==\n-----END PUBLIC KEY-----\n"'
ExecuteProcessRequest:
type: object
required:
- cryptoEnvelope
description: "The request body only holds one property, the __CryptoEnvelope__:\n\n CryptoEnvelope:\n type: object\n\
\ required:\n - payload\n description: >-\n Object holding cryptographically secured request/response\
\ properties.\n properties:\n payload:\n type: string\n minLength: 1\n example: BB20WIJRTz/T9vkGhETgpehzc6dDoioQ9DJV4lRA6ICaWwLPLDE+\n\
\nThe __CryptoEnvelope__ has a __payload__ property which represents an encrypted JSON string of the actual request\
\ object which is specified by the schema __ExecuteProcessRequestPayload__."
properties:
cryptoEnvelope:
$ref: '#/components/schemas/CryptoEnvelope'
GetEcKeyResponse:
type: object
required:
- responseStatus
- ecKeyAsPem
properties:
responseStatus:
$ref: '#/components/schemas/ResponseBase'
ecPublicKey:
$ref: '#/components/schemas/EcPublicKey'
ExecuteProcessResponse:
type: object
required:
- responseStatus
description: "The response data is contained in the __CryptoEnvelope__'s property __payload__ as encrypted and stringified\
\ JSON object using a schema matching the ProcessType.\n\n - CONF -> ConfResponsePayload\n - CARDDATA ->\
\ CardDataResponsePayload"
properties:
responseStatus:
$ref: '#/components/schemas/ResponseBase'
cryptoEnvelope:
$ref: '#/components/schemas/CryptoEnvelope'
ExecuteProcessRequestPayload:
type: object
properties:
facets:
type: string
additionalProperties:
type: object
description: Payload data used in the targeted business process. Stringified JSON
security:
- basicAuth: []