openapi: 3.0.1 info: title: fiskaltrust PosSystem API description: "This API provides a variety of different functionalities for POS systems\ \ and is the central entry point to the **fiskaltrust.Middleware**. It can be\ \ used to **fiscalize (or sign) receipts**, execute **payments** via different\ \ payment providers, **digitally print receipts** (e.g. via the Receipt Bundle),\ \ and to **export data** from the Middleware.
\n
\n

API design principles

While\ \ the POSSystem API was designed to be easily usable via HTTP calls and JSON the\ \ call patterns follow a processual principle. We believe that by giving POS Systems\ \ a way to handle core processes in a stateful way as if they are a statemachine,\ \ that we can always ensure that the processes run as frictionless as possible.\ \ Each call that is handled by the POS System API is safe to be replayed and idempotent.\ \

\n\n

Authentication

The POSSystem API can only be used with\ \ the access data of a CashBox. These credentials can be found on the fiskaltrust.Portal\ \ in the CashBox Configuration page.You will need both CashBoxId\ \ and AccessToken to use this API.

\n \n

Versioning

This\ \ API uses semantic versioning, meaning only major version changes contain breaking\ \ changes. Non-breaking changes (like returning additional data without changing\ \ the original model) will not increase the major version.

\n \nHeaders:\n- x-operation-id: The operation id is\ \ meant to be a idempotency key that let's the caller of the API endpoints safely\ \ retry calls. In case of timeouts, network interruptions this gives the ability\ \ to safely retry the process. While the request on the server side is still in\ \ progress calling the endpoint again with the same operation id does return a\ \ 422 Unprocessable Content. As soon as the request is finished whatever the initial\ \ request has finished with will be returned to the caller whenever the endpoint\ \ is called with the same body and the same operation-id.\n\n e.g. Calling /sign\ \ with x-operation-id ea4279ee-8684-412f-b8eb-32b5dea52811. The operation fails\ \ with a timeout. The caller handles the exception by performing the exact same\ \ operation again. The backend notices that this operation-id has been used in\ \ another transaction already and checks the state. If the state is finished it\ \ returnes the original response body" contact: name: fiskaltrust email: hello@fiskaltrust.eu license: name: This documentation and samples are released under the EUPL license. url: https://opensource.org/licenses/EUPL version: "2.0" servers: - url: https://possystem-api-sandbox.fiskaltrust.eu/v2 description: Sandbox - url: https://possystem-api.fiskaltrust.eu/v2 description: Production security: - CashBoxId: [] CashBoxAccessToken: [] tags: - name: SynchronAPI description: | # synchronous call pattern caller / watcher description ## successfull [![](https://mermaid.ink/img/pako:eNrFU01LAzEQ_SshJ4UuvedQEC1SULqwBT3sZUymbWQ3icmsWGr_u9PuB_3QQ0_mNPPy8mbeMNlK7Q1KJRN-NOg0PlhYRahLJ_i8-S-R-1RsEmEHBYhktQ3gSNxDVWG8xF-A9Lq_QGcuGXf5rAVbiWwyYUSJfF4sRNx3kujmNZsHjEDWu2xmbls-aLKfQHhSewAH2a6DXvdxuhDjd99EB9V4UJ2xqfFplTO9EyOXVTjgCh1JiSdIVBAzlAjs2rqV-BYheo0pcdK-Mfi7-hF-pt86VTyXFLxL-Df_CDsez38Pw3iH15iXI1ljrMEa3svtnlFKWmONpVQcGlxCU1EpS7djKjTki43TUlFscCSbYFinW2OpllClAZ0aSz72TDxkz-3-H77B7gcTagV6?type=png)](https://mermaid.live/edit#pako:eNrFU01LAzEQ_SshJ4UuvedQEC1SULqwBT3sZUymbWQ3icmsWGr_u9PuB_3QQ0_mNPPy8mbeMNlK7Q1KJRN-NOg0PlhYRahLJ_i8-S-R-1RsEmEHBYhktQ3gSNxDVWG8xF-A9Lq_QGcuGXf5rAVbiWwyYUSJfF4sRNx3kujmNZsHjEDWu2xmbls-aLKfQHhSewAH2a6DXvdxuhDjd99EB9V4UJ2xqfFplTO9EyOXVTjgCh1JiSdIVBAzlAjs2rqV-BYheo0pcdK-Mfi7-hF-pt86VTyXFLxL-Df_CDsez38Pw3iH15iXI1ljrMEa3svtnlFKWmONpVQcGlxCU1EpS7djKjTki43TUlFscCSbYFinW2OpllClAZ0aSz72TDxkz-3-H77B7gcTagV6) ## timeout / retry [![](https://mermaid.ink/img/pako:eNrFU8FKAzEQ_ZWQk0KX3nNYEC1SUFrYgj3sZUymNrKbxGQiltp_N212l9bWg17MKXl5mffmkdlyaRVywQO-RTQS7zS8eGhrw9J6th9sbkO1CYQd5MCTltqBIXYLTYP-HH8Ckuv-Ao06Z9zMpxnMJYqyTIhg81m1YH7vJNDVspg59EDammKqrjMfJOl3IDzRHsChbNoUxTJzBCPdoo2UrzpzveT9ZMHGrzZ6A814EJymfsenBr5JnfR42UBZdiTBHiBQRYkhmEuBaPPCPpnzVmII-aCswfxU4WWRI_zP8WVbfS4eg7Mm4M_1j7DjwP8lw98mxEe8Rd-CVul7b_eMmtMaW6y5SFuFK4gN1bw2u0SFSLbaGMkF-YgjHp1Kdbpp4GIFTRjQidJkfc_Ew-kxj9FhmnZffSQbwQ?type=png)](https://mermaid.live/edit#pako:eNrFU8FKAzEQ_ZWQk0KX3nNYEC1SUFrYgj3sZUymNrKbxGQiltp_N212l9bWg17MKXl5mffmkdlyaRVywQO-RTQS7zS8eGhrw9J6th9sbkO1CYQd5MCTltqBIXYLTYP-HH8Ckuv-Ao06Z9zMpxnMJYqyTIhg81m1YH7vJNDVspg59EDammKqrjMfJOl3IDzRHsChbNoUxTJzBCPdoo2UrzpzveT9ZMHGrzZ6A814EJymfsenBr5JnfR42UBZdiTBHiBQRYkhmEuBaPPCPpnzVmII-aCswfxU4WWRI_zP8WVbfS4eg7Mm4M_1j7DjwP8lw98mxEe8Rd-CVul7b_eMmtMaW6y5SFuFK4gN1bw2u0SFSLbaGMkF-YgjHp1Kdbpp4GIFTRjQidJkfc_Ew-kxj9FhmnZffSQbwQ) ## failed [![](https://mermaid.ink/img/pako:eNptklFrwyAUhf-K-LRBQ959CIytjMJGAymsD3m505vVYTQz17FS-t9naxKaZT7puR_H4_WeuHQKueA9fgW0Ep80fHhoa8vienc_rHR9dewJB6kDT1rqDiyxRzAG_VJ_A5KHsYBWLYmHcpPEZJEVRVQEK7fVjvlLkp7u9tm2Qw-knc026j7xIEl_A-Hs7kmcbOMmy_aJEYx0iy5QKilc4jfare_wjjHd83rH8k8XvAWTT9k2sTX5POufVLN2_J-1KAZIsBfoqaJICNaANqgWEWd-8-fwFW_Rt6BV_NLThag5HbDFmou4VdhAMFTz2p4jCoFcdbSSC_IBVzx0KvoME8BFA6af1LXS5PxI4vX0mkbnOkHnX_u2w24?type=png)](https://mermaid.live/edit#pako:eNptklFrwyAUhf-K-LRBQ959CIytjMJGAymsD3m505vVYTQz17FS-t9naxKaZT7puR_H4_WeuHQKueA9fgW0Ep80fHhoa8vienc_rHR9dewJB6kDT1rqDiyxRzAG_VJ_A5KHsYBWLYmHcpPEZJEVRVQEK7fVjvlLkp7u9tm2Qw-knc026j7xIEl_A-Hs7kmcbOMmy_aJEYx0iy5QKilc4jfare_wjjHd83rH8k8XvAWTT9k2sTX5POufVLN2_J-1KAZIsBfoqaJICNaANqgWEWd-8-fwFW_Rt6BV_NLThag5HbDFmou4VdhAMFTz2p4jCoFcdbSSC_IBVzx0KvoME8BFA6af1LXS5PxI4vX0mkbnOkHnX_u2w24) - name: echo description: | health check - name: order description: | execute orders - name: pay description: | execute payments - name: sign description: | # finalize receipts ## successfull [![](https://mermaid.ink/img/pako:eNrVVMFOxCAQ_RXCSZM2rh45bGLUgwdjs_VmPUxgthJbQJgaTcO_y5a1ajSbGPeynIbH482bCczIpVXIBQ_4PKCReKmh9dA3hqXlwJOW2oEhdgFdh_4nfl5dZzATyuUyIYJVt_UdO6l1a1Yb5UBHr6V16IG0NaVWx2xcoUTtaHseswpI0i9A-C3fDM7JUpAyZY5gZ4vTDCv89f4XeKfdCvFph-V_OEwWF4LdjyxQYgnmvJUYgjYtiw8H7L2YUWUN7quWXEdw1gTcYyFTHZ_PLuvHw-j-3xrLC96j70Gr9LXHDafh9Ig9NlykUOEaho4a3piYqDCQrd-M5IL8gAUfnEpK20nAxRq6MKNXSpP1H0ycdjd5hEyTJL4DZatqBg?type=png)](https://mermaid.live/edit#pako:eNrVVMFOxCAQ_RXCSZM2rh45bGLUgwdjs_VmPUxgthJbQJgaTcO_y5a1ajSbGPeynIbH482bCczIpVXIBQ_4PKCReKmh9dA3hqXlwJOW2oEhdgFdh_4nfl5dZzATyuUyIYJVt_UdO6l1a1Yb5UBHr6V16IG0NaVWx2xcoUTtaHseswpI0i9A-C3fDM7JUpAyZY5gZ4vTDCv89f4XeKfdCvFph-V_OEwWF4LdjyxQYgnmvJUYgjYtiw8H7L2YUWUN7quWXEdw1gTcYyFTHZ_PLuvHw-j-3xrLC96j70Gr9LXHDafh9Ig9NlykUOEaho4a3piYqDCQrd-M5IL8gAUfnEpK20nAxRq6MKNXSpP1H0ycdjd5hEyTJL4DZatqBg) ## timeout / retry [![](https://mermaid.ink/img/pako:eNqtU8FKxDAQ_ZWQk8IWF485FEQ9eBDL1pv1MCSzu8E2ielEVkr_3bTZrS4rC4XNafLm8d5jmOm4tAq54C1-BjQSHzRsPDSVYfE58KSldmCI3UNdoz_F74qnBCZClucREax4KV_ZTak3ZjUot3S1y6xDD6StybS6Zt0KJWpH-36fVECS_gLCI78JnMxikWW7xBGMdIM2UGopPKVfJttgmucHU3a7XJ44_k39n2mB-HHGePYMjuMI9taxliJLMGUNsv79bMJ5o2qdNS1eMPKY-HfUSb-flZgveIO-Aa3iDncDp-K0xQYrLmKpcA2hpopXpo9UCGTLbyO5IB9wwYNTUWm_8lysoW4n9FFpsv7AxPH3nG5lPJn-ByT_ERA?type=png)](https://mermaid.live/edit#pako:eNqtU8FKxDAQ_ZWQk8IWF485FEQ9eBDL1pv1MCSzu8E2ielEVkr_3bTZrS4rC4XNafLm8d5jmOm4tAq54C1-BjQSHzRsPDSVYfE58KSldmCI3UNdoz_F74qnBCZClucREax4KV_ZTak3ZjUot3S1y6xDD6StybS6Zt0KJWpH-36fVECS_gLCI78JnMxikWW7xBGMdIM2UGopPKVfJttgmucHU3a7XJ44_k39n2mB-HHGePYMjuMI9taxliJLMGUNsv79bMJ5o2qdNS1eMPKY-HfUSb-flZgveIO-Aa3iDncDp-K0xQYrLmKpcA2hpopXpo9UCGTLbyO5IB9wwYNTUWm_8lysoW4n9FFpsv7AxPH3nG5lPJn-ByT_ERA) ## failed [![](https://mermaid.ink/img/pako:eNrVk8FKxDAQhl8l5KSwxbp4ymFF1IMHsWy9GQ9DMl2DbRKTqSil7252sxbFZUHcizlN_vkz8zFkBq6cRi54xJcercIrA6sAnbQsHQ-BjDIeLLFLaFsMP_WL6iaL2VAsFkkRrLqr79lJbVZ2ua4c6eitcB4DkHG2MPqYDUtUaDxt82OuAorMKxB-6zeJU7MUpE7ZI9i8PM2yxp3vv8h7cSvE5z3IfyBMiKVgDwOLlFyCNWBa1Gx8PAh3Zo7e2YgHhJ6XZ-f_Y66_GyOf8Q5DB0anjz-sPZLTE3YouUihxgb6liSXdkxW6MnV71ZxQaHHGe-9TpW2e8JFA22c1GttyIVPJ25ut3nBNns2fgCFdB6q?type=png)](https://mermaid.live/edit#pako:eNrVk8FKxDAQhl8l5KSwxbp4ymFF1IMHsWy9GQ9DMl2DbRKTqSil7252sxbFZUHcizlN_vkz8zFkBq6cRi54xJcercIrA6sAnbQsHQ-BjDIeLLFLaFsMP_WL6iaL2VAsFkkRrLqr79lJbVZ2ua4c6eitcB4DkHG2MPqYDUtUaDxt82OuAorMKxB-6zeJU7MUpE7ZI9i8PM2yxp3vv8h7cSvE5z3IfyBMiKVgDwOLlFyCNWBa1Gx8PAh3Zo7e2YgHhJ6XZ-f_Y66_GyOf8Q5DB0anjz-sPZLTE3YouUihxgb6liSXdkxW6MnV71ZxQaHHGe-9TpW2e8JFA22c1GttyIVPJ25ut3nBNns2fgCFdB6q) ## callback usage [![](https://mermaid.ink/img/pako:eNqlk19PwyAUxb8K4cklbTZ9JGaJ8U_ig3FZ9a0vd3A3iS0gULPZ9LtLS1e3uRmNfYLD6Y9zL1BTrgVSRh2-Vag43khYWShzRcK30Gsy0y7bOI-9ZMB6yaUB5ck1FAXa4_oC-GtcQSW-W65m91GMjHQ6DQojs8fsiYwzuVLzNo_zlws7np6tU23QgpdapVIku1Pe75UupYJCfuCJZefB46jD1XPkKI3vt2hiEOBevgfPXlWDOOQNgxA2ehi5mJxHWeDR_3fkPUKPaJMNRbcBt-KzLQ6KHpG6K4EZqzk6J9WqIeRH4t22I7-gCq1w4J0-E2e0cngI-VcDJ4x8HUjkN3_qKU1oibYEKcI1rltPTv0LlphTFoYCl1AVPqe5aoIVKq-zjeKUeVthQisjAqm_9ZQtoXCDeiuk13brxG72EJ9L92qaTzigF8Q?type=png)](https://mermaid.live/edit#pako:eNqlk19PwyAUxb8K4cklbTZ9JGaJ8U_ig3FZ9a0vd3A3iS0gULPZ9LtLS1e3uRmNfYLD6Y9zL1BTrgVSRh2-Vag43khYWShzRcK30Gsy0y7bOI-9ZMB6yaUB5ck1FAXa4_oC-GtcQSW-W65m91GMjHQ6DQojs8fsiYwzuVLzNo_zlws7np6tU23QgpdapVIku1Pe75UupYJCfuCJZefB46jD1XPkKI3vt2hiEOBevgfPXlWDOOQNgxA2ehi5mJxHWeDR_3fkPUKPaJMNRbcBt-KzLQ6KHpG6K4EZqzk6J9WqIeRH4t22I7-gCq1w4J0-E2e0cngI-VcDJ4x8HUjkN3_qKU1oibYEKcI1rltPTv0LlphTFoYCl1AVPqe5aoIVKq-zjeKUeVthQisjAqm_9ZQtoXCDeiuk13brxG72EJ9L92qaTzigF8Q) - name: issue description: | distribute receipts - name: journal description: | export data - name: configuration description: | configuration handling and management tools for cash registers paths: /echo: post: tags: - SynchronAPI summary: Executes a blocking echo call end-to-end description: | This method can be used to perform a basic health and communcation check. It is also used for reseting the Middleware Instance (echo(null) parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: type: object responses: "200": description: | operation-id found, response from cashbox/queue/terminal content: application/json: schema: type: object "201": description: | Operation-id successfully created. Response contains information from the cashbox/queue/terminal. content: application/json: schema: type: object "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' callbacks: OperationState: $ref: '#/components/callbacks/OperationState' /sign: post: tags: - SynchronAPI summary: execute a sign call end-to-end description: | This method can be used to sign different types of receipts according to local fiscalization regulations. After signing the receipt according to the fiscal law, this method synchronously returns the data that need to be printed onto the receipt. The format of the receipt request is documented in the Middleware API docs, and the exact behavior of the method is determined by the cases sent within the properties (e.g. ftReceiptCase, ftChargeItemCase and ftPayItemCase. parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/ReceiptRequest' responses: "200": description: | successfull, response from existing item content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' "201": description: | successfull created, response from queue content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' callbacks: OperationState: $ref: '#/components/callbacks/OperationState' /SignRequest: post: tags: - sign summary: starts a sign request description: | starts a sign request operationId: SignRequestAsnyc parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-finalized in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-finalized' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/ReceiptRequest' responses: "200": description: | successfull operation found "201": description: | successfull, operation created "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' callbacks: OperationState: $ref: '#/components/callbacks/OperationState' OperationFinalized: $ref: '#/components/callbacks/OperationFinalized' /PeekSignRequestState: get: tags: - sign summary: get state of sign request description: | get state of sign request operationId: PeekSignRequestStateAsnyc parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: type: array items: $ref: '#/components/schemas/SignRequestState' "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' /SignResponse: post: tags: - sign summary: get result of sign request and purges it from queue description: | get result of sign request and purges it from queue operationId: SignResponseAsnyc parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: $ref: '#/components/schemas/ReceiptResponse' "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' /issue: post: tags: - SynchronAPI summary: execute a issue call end-to-end description: | execute a issue call end-to-end operationId: Issue parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/issue_body' responses: "200": description: | successfull, response from existing item content: application/json: schema: $ref: '#/components/schemas/IssueResponse' "201": description: | successfull created content: application/json: schema: $ref: '#/components/schemas/IssueResponse' "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' callbacks: OperationState: $ref: '#/components/callbacks/OperationState' /issue/{QueueId}/{QueueItemId}: get: tags: - SynchronAPI summary: get content of an issued receipt description: | get content of an issued receipt in requested format, without updateing the submitted state parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false responses: "200": description: | (OK) successfull content: image/png: schema: type: string format: binary application/pdf: schema: type: string format: binary application/json: schema: type: object "204": description: | (No Content) successfull "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' put: tags: - SynchronAPI summary: updates an issued and/or submitted receipt description: | execute a update call end-to-end parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: X-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/QueueId_QueueItemId_body' responses: "200": description: | (OK) successfull action: download, print content: text/*: schema: type: string application/pdf: schema: type: string format: binary image/*: schema: type: string format: binary "201": description: | (Created) successfull action: send, upload content: text/*: schema: type: string application/pdf: schema: type: string format: binary image/*: schema: type: string format: binary "204": description: | (No Content) successfull action: accept, view "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' callbacks: OperationState: $ref: '#/components/callbacks/OperationState' /issue/{QueueId}/{QueueItemId}/link/qrcode: get: tags: - SynchronAPI summary: link visualization via qr code description: | get image of qr code for digital receipt url
parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false responses: "200": description: | successfull content: image/png: schema: type: string format: byte "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "404": description: The requested resource was not found. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: notFound: $ref: '#/components/examples/not-found' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' /issue/{QueueId}/{QueueItemId}/delivered: get: tags: - SynchronAPI summary: "gives the information, if the receipt was delivered, at leasted once" description: | TBD parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false responses: "200": description: | (OK) successfull was deliverd content: application/json: schema: type: object "204": description: | (No Content) successfull was not delivered "400": description: | The request was malformed or could not be processed. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "401": description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' "404": description: The requested resource was not found. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: notFound: $ref: '#/components/examples/not-found' "500": description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' default: description: "unexpected error \n" /IssueRequest: post: tags: - issue summary: starts an issue request description: | execute a issue call end-to-end publish a digital receipt operationId: IssueRequestAsync parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-finalized in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-finalized' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/IssueRequest_body' responses: "201": description: | successfull created "400": description: | header values wrong default: description: "unexpected error \n" callbacks: OperationState: $ref: '#/components/callbacks/OperationState' OperationFinalized: $ref: '#/components/callbacks/OperationFinalized' /IssueRequest/{QueueId}/{QueueItemId}: put: tags: - issue summary: updates an issue request description: | execute a issue call end-to-end operationId: IssueUpdate parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-finalized in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-finalized' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false requestBody: content: application/json: schema: $ref: '#/components/schemas/QueueId_QueueItemId_body_1' responses: "200": description: | (OK) successfull action: download, print content: text/*: schema: type: string application/pdf: schema: type: string format: binary image/*: schema: type: string format: binary "201": description: | (Created) successfull action: send, upload use `PeekIssueRequestState` and `IssueResponse` for more details "204": description: | (No Content) successfull action: accept, view "400": description: | Bad Request "500": description: | Internal error callbacks: OperationState: $ref: '#/components/callbacks/OperationState' OperationFinalized: $ref: '#/components/callbacks/OperationFinalized' /PeekIssueRequestState: get: tags: - issue summary: get state of issue request description: | get state of sign request operationId: PeekIssueRequestStateAsnyc parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: type: array items: $ref: '#/components/schemas/IssueRequestState' "400": description: | not successfull default: description: | unexpected error /IssueResponse: post: tags: - issue summary: get result of issue request and purges the state from queue/processor description: | get result of issue request and purges it from queue/processor operationId: IssueResponseAsnyc parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: $ref: '#/components/schemas/IssueResponse' "400": description: | header values wrong default: description: "unexpected error \n" /BlockIssueRequest/{QueueId}/{QueueItemId}/WhileSubmitted: get: tags: - issue summary: blocks for a maxiumum timeout in second (default is 15) and comes back with 200 if delivered and 204 if not deliverd description: | TBD parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: Timeout in: query required: false style: form explode: true schema: type: number format: int nullable: false default: 15 responses: "200": description: | (OK) successfull was deliverd content: application/json: schema: type: object "204": description: | (No Content) successfull was not delivered "404": description: | QueueId or QueueItemId doesn't exist default: description: "unexpected error \n" /BlockIssueRequest/{QueueId}/{QueueItemId}/WhileDelivered: get: tags: - issue summary: blocks for a maxiumum timeout in second (default is 15) and comes back with 200 if delivered and 204 if not deliverd description: | TBD *TEST* parameters: - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: QueueItemId in: path required: true style: simple explode: false schema: type: string format: uuid nullable: false - name: Timeout in: query required: false style: form explode: true schema: type: number format: int nullable: false default: 15 responses: "200": description: | (OK) successfull was deliverd content: application/json: schema: type: object "204": description: | (No Content) successfull was not delivered "404": description: | QueueId or QueueItemId doesn't exist default: description: "unexpected error \n" /pay: post: tags: - SynchronAPI summary: exectue a pay call end-to-end parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: "identifies the terminal and overwrites also TerminalId in ReceiptRequest,\ \ if given \n" required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentRequest' examples: payment: $ref: '#/components/examples/PayRequestHobexPaymentMinimum_1' cancel: $ref: '#/components/examples/PayRequestHobexRestApiCancelMinimum_1' refund: $ref: '#/components/examples/PayRequestHobexRestApiRefundMinimum_1' pre_authorize: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_1' pre_authorize_capture: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_2' pre_authorize_cancel: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_3' responses: "200": description: | successfull, response from existing item content: application/json: schema: $ref: '#/components/schemas/PaymentResponse' "201": description: | successfull created, response from queue content: application/json: schema: $ref: '#/components/schemas/PaymentResponse' examples: payment: $ref: '#/components/examples/PayResponseHobexRestApiPaymentMinimum_1' cancel: $ref: '#/components/examples/PayResponseHobexRestApiCancelMinimum_1' refund: $ref: '#/components/examples/PayResponseHobexRestApiRefundMinimum_1' pre_authorize: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_1' pre_authorize_capture: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_2' pre_authorize_cancel: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_3' "400": description: | Either the x-operation-id header was not sent or the body that was sent doesn't meet the requirements "401": description: | Not authenticated default: description: "unexpected error \n" callbacks: OperationState: $ref: '#/components/callbacks/OperationState' delete: tags: - SynchronAPI summary: stops ongoing pay call parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: "identifies the terminal and overwrites also TerminalId in ReceiptRequest,\ \ if given \n" required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: x-possystem-id in: header description: | identifies the calling possystem #TODO required: false style: simple explode: false schema: $ref: '#/components/schemas/x-possystem-id' responses: default: description: "unexpected error \n" callbacks: OperationState: $ref: '#/components/callbacks/OperationState' /PayRequest: post: tags: - pay summary: starts a pay request operationId: PayRequestAsnyc parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-finalized in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-finalized' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in PaymentRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentRequest' examples: payment: $ref: '#/components/examples/PayRequestHobexPaymentMinimum_1' cancel: $ref: '#/components/examples/PayRequestHobexRestApiCancelMinimum_1' refund: $ref: '#/components/examples/PayRequestHobexRestApiRefundMinimum_1' pre_authorize: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_1' pre_authorize_capture: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_2' pre_authorize_cancel: $ref: '#/components/examples/PayRequestHobexRestApiPreAuthMinimum_1_3' responses: "200": description: | successfull submitted "400": description: | not successfull default: description: "unexpected error \n" callbacks: OperationState: $ref: '#/components/callbacks/OperationState' OperationFinalized: $ref: '#/components/callbacks/OperationFinalized' delete: tags: - pay summary: | stops a ongoing pay request parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-operation-callback-finalized in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-finalized' - name: x-operation-callback-state in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-callback-state' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in PaymentRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: default: description: "unexpected error \n" callbacks: OperationState: $ref: '#/components/callbacks/OperationState' OperationFinalized: $ref: '#/components/callbacks/OperationFinalized' /PeekPayRequestState: get: tags: - pay summary: get state of pay request description: | get state of pay request operationId: PeekPayRequestStateAsnyc parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: type: array items: $ref: '#/components/schemas/PayRequestState' "400": description: | not successfull default: description: | unexpected error /PayResponse: post: tags: - pay summary: | get result of a pay request and purges state from queue/processor operationId: PayResponseAsnyc parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' responses: "200": description: | successfull content: application/json: schema: $ref: '#/components/schemas/PaymentResponse' examples: payment: $ref: '#/components/examples/PayResponseHobexRestApiPaymentMinimum_1' cancel: $ref: '#/components/examples/PayResponseHobexRestApiCancelMinimum_1' refund: $ref: '#/components/examples/PayResponseHobexRestApiRefundMinimum_1' pre_authorize: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_1' pre_authorize_capture: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_2' pre_authorize_cancel: $ref: '#/components/examples/PayResponseHobexRestApiPreAuthMinimum_1_3' "400": description: | not successfull default: description: "unexpected error \n" /PeekJournalItem/{QueueId}/{StorageType}/{Id}: get: tags: - journal summary: | get a single journal entry by id parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid - name: StorageType in: path required: true style: simple explode: false schema: $ref: '#/components/schemas/StorageTypeEnum' - name: Id in: path required: true style: simple explode: false schema: type: string format: uuid responses: "200": description: | successfull "400": description: | not successfull default: description: "unexpected error \n" /PeekJournalRange/{QueueId}/{StorageType}: get: tags: - journal parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' - name: QueueId in: path required: true style: simple explode: false schema: type: string format: uuid - name: StorageType in: path required: true style: simple explode: false schema: $ref: '#/components/schemas/StorageTypeEnum' responses: default: description: "unexpected error \n" /journal/{StorageType}/{Id}: get: tags: - SynchronAPI description: "gets a single entry of a specific \n" parameters: - name: StorageType in: path required: true style: simple explode: false schema: $ref: '#/components/schemas/StorageTypeEnum' - name: Id in: path required: true style: simple explode: false schema: type: string format: uuid responses: "200": description: | successfull content: application/json: schema: $ref: '#/components/schemas/inline_response_200' "400": description: | storage type not found "404": description: | entry within storage type not found default: description: "unexpected error \n" /pair: post: tags: - configuration parameters: - name: x-operation-id in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' - name: x-operation-lifetime in: header required: false style: simple explode: false schema: $ref: '#/components/schemas/x-operation-lifetime' - name: x-terminal-id in: header description: | identifies the terminal and overwrites also TerminalId in ReceiptRequest, if given required: false style: simple explode: false schema: $ref: '#/components/schemas/x-terminal-id' requestBody: $ref: '#/components/requestBodies/PairRequest' responses: "200": description: | response credentials content: application/json: schema: $ref: '#/components/schemas/inline_response_200_1' default: description: "unexpected error \n" security: [] /rebuild: post: tags: - configuration responses: default: description: "unexpected error \n" components: schemas: x-operation-id: description: | operation identification, for implementation of idempotnency, to detect multiple calls for same operations related to communicatio issues or communication network switch. calls or messages with same OperationId schould end up in only one action. x-operation-lifetime: description: | operation lifetime, in ms Lifetime of the operation/message to be accepted by the receiver in ms. Timeout=NAK, Timeout happens after Lifetime+BusSLA. x-operation-callback-state: description: | single state callback setting for current operation, executed each time when a status change occures x-terminal-id: description: terminal identification x-possystem-id: description: identifies the calling possystem ProblemDetails: required: - title type: object properties: type: maxLength: 1024 type: string description: A URI reference that identifies the problem type. format: uri status: maximum: 599 minimum: 100 type: integer description: The HTTP status code generated by the origin server for this occurrence of the problem. format: int32 title: maxLength: 1024 type: string description: "A short, human-readable summary of the problem type. It should\ \ not change from occurrence to occurrence of the problem, except for\ \ purposes of localization." detail: maxLength: 4096 type: string description: A human-readable explanation specific to this occurrence of the problem. instance: maxLength: 1024 type: string description: A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. code: maxLength: 50 type: string description: An API specific error code aiding the provider team understand the error based on their own potential taxonomy or registry. errors: $ref: '#/components/schemas/Errors' Errors: maxItems: 1000 type: array description: An array of error details to accompany a problem details response. items: $ref: '#/components/schemas/ErrorDetail' ErrorDetail: required: - detail type: object properties: detail: maxLength: 4096 type: string description: "A granular description on the specific error related to a\ \ body property, query parameter, path parameters, and/or header." pointer: maxLength: 1024 type: string description: A JSON Pointer to a specific request body property that is the source of error. parameter: maxLength: 1024 type: string description: The name of the query or path parameter that is the source of error. header: maxLength: 1024 type: string description: The name of the header that is the source of error. code: maxLength: 50 type: string description: A string containing additional provider specific codes to identify the error context. description: An object to provide explicit details on a problem towards an API consumer. ReceiptRequest: required: - cbChargeItems - cbPayItems - cbReceiptMoment - cbReceiptReference type: object properties: cbTerminalID: maxLength: 1023 type: string description: | The unique identification of the input-station/terminal within a cash-register/pos-system identified by `ftCashBoxID`. nullable: false default: undefined cbReceiptReference: maxLength: 1023 type: string description: | Reference number send by the cash register. This value must be a unique string/receipt number related to the calling cash register. This string/receipt number is a unique primary key of the dataset of the cash register. nullable: false default: undefined cbReceiptMoment: type: string description: | moment at which the receipt was create by the cash register, must be provided in UTC. format: date-time nullable: false example: 2020-06-29T17:45:40.505Z cbChargeItems: type: array description: | list of line items related to services and products items: $ref: '#/components/schemas/ChargeItem' cbPayItems: type: array description: | list of line items related to payments items: $ref: '#/components/schemas/PayItem' ftCashBoxID: type: string description: | identification of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftPosSystemID: type: string description: | identification of the used software of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftReceiptCase: type: integer description: | Type of business according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a cash register business case at the point-of-sale is used. format: uint64 nullable: false default: 0 ftReceiptCaseData: description: "optional gives additional details for defined type of business\ \ related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu\ \ !TODO! \n" oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false ftQueueID: type: string description: | optional routing instruction to identify a specific queue behind a load balancer or in other usecases format: uuid nullable: true cbPreviousReceiptReference: maxLength: 1023 type: string description: | optional Reference `cbReceiptReference` of the previous receipt. Used to connect multiple requests for a single Business Case. nullable: true cbReceiptAmount: description: | optional total receipt amount, including value added taxes (=gross receipt amount) given to avoid calculation and rounding differences. systems which are using net amounts as central calculation should alsways use this property. if not provided, the sum of `Amount` in all provided `ftChargeItems` is used as total receipt amount. uses `DecimalPresissionMultiplier` as discriminator between int64 and double nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null cbUser: description: | optional Identification of the user, who creates the receipt. oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbArea: description: | optional Identification of the area/section/field, in which the receipt is created. e.g. Table number of a restaurant business; a department of a commercial establishment; the vehicle of a taxi company oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbCustomer: description: | optional Identification of the consumer, for whom the receipt is created. e.g. Email address, phone number, personal tax number oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbSettlement: description: | optional Settlement identification where this receipt will be added. e.g. shift number or day of operation oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | The cash register transfers the data of an entire receipt request to the fiskaltrust.Middleware using the ReceiptRequest data structure. The details of fields supported by this data structure are outlined in the table below. The field fiskaltrust receipt case (ftReceiptCase) is of the highest importance for the correct processing of the receipt. This field defines the receipt type, determines if the receipt has to be secured accordingly to the national law, and establishes the way to calculate the correct values for each national counter. ChargeItem: required: - Amount - Description - Quantity - VATRate type: object properties: ftChargeItemID: type: string description: | optional used as an identifier of a chargeitem, when reading data format: uuid nullable: true readOnly: true Quantity: description: | defines the quantity of the line item. quantities of line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 1 - type: number format: double nullable: false default: 1.0 Description: maxLength: 1023 type: string description: | defines the description of the line item. line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization nullable: true Amount: description: | defines the (total) amount of the line item. to get itemprice the amount need to be devided by quantity. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 VATRate: description: | defines the value added tax rate in percentage of the line item. line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 ftChargeItemCase: type: integer description: | optional defines the type of service or product related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a service or product delivered at the point-of-sale with defined `VATRate` is used. format: uint64 nullable: false default: 0 ftChargeItemCaseData: description: | optional gives additional details for defined type of service or product related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false VATAmount: description: | optional when given and not null this amount is used as the (total) value added taxes amount for the line item to avoid rounding when accumulating value added taxes. systems which are using net amounts as central calculation should alsways use this property. uses `DecimalPresissionMultiplier` as discriminator between int64 and double nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null Moment: type: string description: | optional moment at which the serivce or product was ordered or delivered, must be provided in UTC. accumulated line items get the minimum (first) moment. if not given, the `cbReceiptMoment` is used as fallback format: date-time nullable: true example: 2020-06-29T17:45:40.505Z Position: description: | optional used to sort and group the line items for receipt visualization. accumulated line items get the minimum (first) position. uses `DecimalPresissionMultiplier` as discriminator between int64 and double with a specific instruction/flag in `ftReceiptCase` a grouping of multiple line items can be activated. if this is the case, `Position` is threaded as a decimal number, the whole number represents the grouped line item and the fraction part is used within the group oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 AccountNumber: maxLength: 1023 type: string description: | optional account number for bookkeeping export purpose nullable: true CostCenter: maxLength: 1023 type: string description: | optional cost center for cost accounting purpose nullable: true ProductGroup: maxLength: 1023 type: string description: | optional product group related to line item nullable: true ProductNumber: maxLength: 1023 type: string description: | optional product number related to line item nullable: true ProductBarcode: maxLength: 1023 type: string description: | optional product barcode related to line item nullable: true Unit: maxLength: 1023 type: string description: | optional unit of measurement for the line item. e.g. you have on one charging session of an electric vehicle, this would be `Quantity` 1 and the total amount of the session within `amount`. the unit of measurement could be `kW` for dc charging or `min` for ac charging. nullable: true UnitQuantity: description: | optional the quantity related to the unit of measurement defined in `Unit`. uses `DecimalPresissionMultiplier` as discriminator between int64 and double e.g. you have on one charging session of an electric vehicle, this would be `Quantity` 1 and the total amount of the session within `amount`. if the unit of measurement is `kW` for dc charging the `UnitQuantity` could be 65.4 as an example. which would mean the line item represents a charging session with a total amout of power of 65.4kW. nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null UnitPrice: description: "optional the price related to the unit of measurement defined\ \ in `Unit`. uses `DecimalPresissionMultiplier` as discriminator between\ \ int64 and double e.g. you have on one charging session of an electric\ \ vehicle, this would be `Quantity` 1 and as example the total amount\ \ of 30.7 of the session within `amount`. if the unit of measurement is\ \ `kW` for dc charging the `UnitQuantity` could be 65.4 as an example\ \ and for the given total amount the `UnitPrice` would be 0.5. which would\ \ mean the line item represents a charging session with a total amout\ \ of power of 65.4kW with a price per kW of 0.5. \n" nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | represents a item related to a service or a product, taxable CurrencyEnum: type: string description: | used as currency code for money numbers. along ISO 4217 (https://en.wikipedia.org/wiki/ISO_4217) nullable: false default: EUR enum: - EUR - CHF - CZK - HUF - BAM - DKK - RON - NOK - PLN - RSD - SEK - UAH - USD - AED - AFN - ALL - AMD - ANG - AOA - ARS - AUD - AWG - AZN - BBD - BDT - BGN - BHD - BIF - BMD - BND - BOB - BOV - BRL - BSD - BTN - BWP - BYN - BZD - CAD - CDF - CHE - CHW - CLF - CLP - CNY - COP - COU - CRC - CUP - CVE - DJF - DOP - DZD - EGP - ERN - ETB - FJD - FKP - GBP - GEL - GHS - GIP - GMD - GNF - GTQ - GYD - HKD - HNL - HTG - IDR - ILS - INR - IQD - IRR - ISK - JMD - JOD - JPY - KES - KGS - KHR - KMF - KPW - KRW - KWD - KYD - KZT - LAK - LBP - LKR - LRD - LSL - LYD - MAD - MDL - MGA - MKD - MMK - MNT - MOP - MRU - MUR - MVR - MWK - MXN - MXV - MYR - MZN - NAD - NGN - NIO - NPR - NZD - OMR - PAB - PEN - PGK - PHP - PKR - PYG - QAR - RUB - RWF - SAR - SBD - SCR - SDG - SGD - SHP - SLE - SLL - SOS - SRD - SSP - STN - SVC - SYP - SZL - THB - TJS - TMT - TND - TOP - TRY - TTD - TWD - TZS - UGX - USN - UYI - UYU - UYW - UZS - VED - VES - VND - VUV - WST - XAF - XAG - XAU - XBA - XBB - XBC - XBD - XCD - XDR - XOF - XPD - XPF - XPT - XSU - XTS - XUA - XXX - YER - ZAR - ZMW - ZWL DecimalPrecisionMultiplierEnum: type: integer description: | is used as multiplier for decimal numbers. when value 1 is used, revlevant numbers are interpreted as floating-point numbers. for all other values, relevant numbers are interpreted as integer and need to be devided by the Multiplier to get the decimal representation. format: int32 nullable: false default: 1 enum: - 1 - 100 - 10000 - 1000000 - 100000000 PayItem: required: - Amount - Description type: object properties: ftPayItemID: type: string description: | optional used as an identifier of a chargeitem, when reading data format: uuid nullable: true readOnly: true Quantity: description: | defines the quantity of the line item. quantities of line items with same `Description` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 1 - type: number format: double nullable: false default: 1.0 Description: maxLength: 1023 type: string description: | defines the description of the line item. line items with same `Description` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization nullable: true Amount: description: | defines the (total) amount of the line item. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 ftPayItemCase: type: integer description: | optional defines the type of payment related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a cah payment at the point-of-sale is used. format: uint64 nullable: false default: 0 ftPayItemCaseData: description: | optional gives additional details for defined type of payment related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false Moment: type: string description: | optional moment at which the payment was executed, must be provided in UTC. accumulated line items get the minimum (first) moment. if not given, the `cbReceiptMoment` is used as fallback format: date-time nullable: true example: 2020-06-29T17:45:40.505Z Position: description: "optional used to sort and group the line items for receipt\ \ visualization. accumulated line items get the minimum (first) position.\ \ uses `DecimalPresissionMultiplier` as discriminator between int64 and\ \ double with a specific instruction/flag in `ftReceiptCase` a grouping\ \ of multiple line items can be activated. if this is the case, `Position`\ \ is threaded as a decimal number, the whole number represents the grouped\ \ line item and the fraction part is used within the group \n" oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 AccountNumber: maxLength: 1023 type: string description: | optional account number for bookkeeping export purpose nullable: true CostCenter: maxLength: 1023 type: string description: | optional cost center for cost accounting purpose nullable: true MoneyGroup: maxLength: 1023 type: string description: | optional group related to line item nullable: true MoneyNumber: maxLength: 1023 type: string description: | optional number related to line item nullable: true MoneyBarcode: maxLength: 1023 type: string description: | optional barcode or serialnumber related to line item nullable: true Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | represents a item related to a payment ReceiptResponse: required: - ftCashBoxIdentification - ftQueueId - ftQueueItemId - ftQueueRow - ftReceiptIdentification - ftReceiptMoment - ftSignatures - ftState type: object properties: ftQueueID: type: string description: | identification of the queue used for processing format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftQueueItemID: type: string description: | identification of the item within a specific queue used for processing format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftQueueRow: type: integer description: | row in which the item is stored within a specific queue used for processing format: uint64 nullable: false default: 0 ftCashBoxIdentification: maxLength: 1023 type: string description: | human readable identification or serial number of the cash register related to the national regulation/law. this need to be printed on the receipt to identify the cash register within a merchant, and is unique over a single merchant. do not mix up `ftCashBoxId` with `ftCashBoxIdentification`. the `ftCashBoxId` identifies a configuration container and is used as part of authentication. the `ftCashBoxIdentification` is a human readable identification of the queue. nullable: false default: undefined ftReceiptIdentification: maxLength: 1023 type: string description: | human readable identification of the receipt related to the national regulation/law and the `ftCashBoxIdentification`/ Queue. this need to be printed on the receipt to identify it within a merchant and cash register. this always starts with 'ft', followed by the row number of the queue in hexadecimal, followed by '#', followed by national required or defined receipt numbering. nullable: false default: ft0# ftReceiptMoment: type: string description: "moment at which the receipt was processed by fiskaltrust.Middleware,\ \ must be provided in UTC. this need to be printed on the receipt in local\ \ date/time. \n" format: date-time nullable: false example: 2020-06-29T17:45:40.505Z ftSignatures: type: array description: | list of signature items generated by fiskaltrust.Middleware. this need to be printed on the receipt according to given format instructions to comply with national regulation/law and to enable fiskaltrust's compliance-as-a-service. items: $ref: '#/components/schemas/SignatureItem' ftState: type: integer description: | indicates the status of the fiskaltrust.Middleware according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! format: uint64 nullable: false default: 0 ftStateData: description: "optional gives additional details for the status of fiskaltrust.Middleware\ \ defined type of business related to fiskaltrust reference. for detailed\ \ definition goto https://docs.fiskaltrust.eu !TODO! \ \ \n" oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false ftCashBoxID: type: string description: | mirror from `ReceiptRequest` identification of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 cbTerminalID: maxLength: 1023 type: string description: | mirror from `ReceiptRequest` The unique identification of the input-station/terminal within a cash-register/pos-system identified by `ftCashBoxID`. nullable: false default: undefined cbReceiptReference: maxLength: 1023 type: string description: "mirror from `ReceiptRequest` Reference number send by the\ \ cash register. This value must be a unique string/receipt number related\ \ to the calling cash register. This string/receipt number is a unique\ \ primary key of the dataset of the cash register. \n" nullable: false default: undefined ftReceiptHeader: type: array description: | additional header lines this need to be printed on the receipt. items: maxLength: 1023 type: string nullable: false ftChargeItems: type: array description: | list of line items added by fiskaltrust.Middleware while processing the request related to services and products this need to be printed on the receipt. items: $ref: '#/components/schemas/ChargeItem' ftChargeLines: type: array description: | additional text for line items related to services and products this need to be printed on the receipt. items: maxLength: 1023 type: string nullable: false ftPayItems: type: array description: | list of line items added by fiskaltrust.Middleware while processing the request related to payments this need to be printed on the receipt. items: $ref: '#/components/schemas/PayItem' ftPayLines: type: array description: | additional text for line items related to payments this need to be printed on the receipt. items: maxLength: 1023 type: string nullable: false ftReceiptFooter: type: array description: | additional footer lines this need to be printed on the receipt. items: maxLength: 1023 type: string nullable: false description: | fiskaltrust.Middleware sends back the processed data to the cash register through the receipt response. The data included in the request, such as header, service, pay items, and footer, will not be sent back. The returned data is added to the receipt as supplement to the data of the receipt request. SignatureItem: required: - Data - ftSignatureFormat - ftSignatureType type: object properties: ftSignatureItemID: type: string description: | optional used as an identifier of a signautreitem, when reading data format: uuid nullable: true readOnly: true ftSignatureFormat: type: integer description: | Format for displaying signature data according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! format: uint64 nullable: false default: 0 ftSignatureType: type: integer description: | Type of signature according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! format: uint64 default: 0 Caption: maxLength: 1023 type: string description: | optional Heading, which has to be displayed as text above the signature data. nullable: true Data: description: "optional Signature content which has to be displayed in the\ \ specified format. \n" oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false description: | The signature of the receipt must comply with the national law. The signature data returned in the response must be visualized on the receipt related to format instruction and to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! The signature entries can also be used to visualize hints and messages related to the fiskaltrust.SecurityMechanism. x-operation-callback-finalized: description: | single callback setting for current operation, executed once the operation is in final state, `done` or `failed` SignRequestState: required: - OperationId - State type: object description: | reflects a single state event of a sign request allOf: - $ref: '#/components/schemas/OperationState' - type: object properties: QueueItemID: type: string format: uuid nullable: true OperationState: required: - OperationId - State properties: OperationID: type: string description: | operationid format: uuid nullable: false QueueID: type: string format: uuid nullable: true State: $ref: '#/components/schemas/OperationStateEnum' StateMessage: type: string nullable: true StateData: description: | optional oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false description: | reflects a single state event OperationStateEnum: type: string example: done default: unknown enum: - pending - processing - done - failed - unknown IssueRequest: required: - ReceiptRequest - ReceiptResponse type: object properties: ReceiptRequest: $ref: '#/components/schemas/ReceiptRequest_1' ReceiptResponse: $ref: '#/components/schemas/ReceiptResponse_1' additionalProperties: false description: | request to issue receipt ReceiptRequest_1: type: object properties: ftCashBoxID: type: string description: This ID is assigned by the fiskaltrust-user portal and is a part of the authentication of the cash register. nullable: true ftQueueID: type: string description: The QueueID is required only when a load balancer is used. The value of the ftQueueID allows the load balancer to find the correct route to the corresponding Queue. nullable: true ftPosSystemId: type: string description: This field identifies and documents the type and software version of the PosSystem sending the request. It is used for audits and as a base for commission calculation. The PosSystem itself has to be created in the portal and its ID can be implemented as a constant value by the PosCreator. nullable: true cbTerminalID: type: string description: The unique identification of the input station/ cash register within a ftCashBoxID nullable: true cbReceiptReference: type: string description: "Reference number returned by the cash register. Ideally, this\ \ value would be a unique receipt number for the cash register, to allow\ \ saving of the return value to the cash register data set." nullable: true cbReceiptMoment: type: string description: The time of receipt creation. Must be provided in UTC. format: date-time cbChargeItems: type: array description: List of services or items sold. nullable: true items: $ref: '#/components/schemas/ChargeItem_1' cbPayItems: type: array description: List of payment received. nullable: true items: $ref: '#/components/schemas/PayItem_1' ftReceiptCase: type: integer description: Type of business transaction according to the reference table in the appendix. It is used to choose the right processing logic. format: int64 ftReceiptCaseData: type: string description: "Additional data for the business transaction, currently accepted\ \ only in JSON format. Although all string values are supported, we suggest\ \ using data structures serialized into JSON format." nullable: true cbReceiptAmount: type: number description: "Total receipt amount incl. taxes (gross receipt amount). If\ \ it is not provided, it can be calculated with the sum of the amounts\ \ of the cbChargeItems. It can be useful and important for systems working\ \ with net amounts, as it helps to apply different methods of calculation\ \ and rounding." format: double nullable: true cbUser: type: string description: "Identification of the user, who creates the receipt. Although\ \ all string values are supported, we suggest using data structures serialized\ \ into JSON format." nullable: true cbArea: type: string description: "Identification of the section/field, in which the receipt\ \ is created. Although all string values are supported, we suggest using\ \ data structures serialized into JSON format." nullable: true cbCustomer: type: string description: "Identification of the client, for whom the receipt is created.\ \ Although all string values are supported, we suggest using data structures\ \ serialized into JSON format." nullable: true cbSettlement: type: string description: Settlement identification where this receipt will be added. nullable: true cbPreviousReceiptReference: type: string description: cbReceiptReference of the previous receipt. Used to connect multiple requests for a single Business Case. nullable: true additionalProperties: false description: The cash register transfers the data of an entire receipt request to the fiskaltrust.Middleware using the ReceiptRequest data structure. ChargeItem_1: type: object properties: position: type: integer description: Line number or position number on the Receipt. Used to preserve the order of lines on the receipt. format: int64 quantity: type: number description: Amount or volume (number) of service(s) or items of the entry. format: double description: type: string description: "Name, description of customary indication, or type of the\ \ service or item." nullable: true amount: type: number description: "Gross total price of service(s). The gross individual price,\ \ net total price, and net individual price, have to be calculated using\ \ the amount and either VAT rate or VAT amount." format: double vatRate: type: number description: VAT rate as percentage. format: double ftChargeItemCase: type: integer description: Type of service or item according to the reference table in the appendix. It is used in order to determine the processing logic for the corresopnding business transaction. format: int64 ftChargeItemCaseData: type: string description: "Additional data about the service, currently accepted only\ \ in JSON format." nullable: true vatAmount: type: number description: "If the VAT amount is indicated, it can be used to calculate\ \ the net amount in order to avoid rounding errors which are especially\ \ likely to appear in row-based net price additions." format: double nullable: true accountNumber: type: string description: Account number for transfer into bookkeeping. nullable: true costCenter: type: string description: "Indicator for transfer into cost accounting (type, center,\ \ and payer)." nullable: true productGroup: type: string description: This value allows the customer the logical grouping of products. nullable: true productNumber: type: string description: Value used to identify the product. nullable: true productBarcode: type: string description: Product’s barcode nullable: true unit: type: string description: Unit of measurement nullable: true unitQuantity: type: number description: "Quantity of the service(s) of receipt entry, displayed in\ \ indicated units." format: double nullable: true unitPrice: type: number description: Gross price per indicated unit. format: double nullable: true moment: type: string description: "Time of service (year, month, day, hour, minute, second)" format: date-time nullable: true additionalProperties: false description: Charge items entries are used for receipt requests as well as for receipt responses. PayItem_1: type: object properties: position: type: integer description: Line number or positionnumber on the Receipt. Used to preserve the order of lines on the receipt. format: int64 quantity: type: number description: Number of payments. This value will be set to 1 in most of the cases. It can be greater then 1 e.g. when paying with multiple vouchers of the same value. format: double description: type: string description: Name or description of payment. nullable: true amount: type: number description: Total amount of payment. format: double ftPayItemCase: type: integer description: Type of payment according to the reference table in the appendix. It is used in order to determine the processing logic. format: int64 ftPayItemCaseData: type: string description: "Additional data about the payment, currently accepted only\ \ in JSON format." nullable: true accountNumber: type: string description: Account number for transfer into bookkeeping. nullable: true costCenter: type: string description: "Indicator for transfer into cost accounting (type, centre\ \ and payer)" nullable: true moneyGroup: type: string description: This value allows the logical grouping of payment types. nullable: true moneyNumber: type: string description: This value identifies the payment type. nullable: true moment: type: string description: Time of payment format: date-time nullable: true additionalProperties: false description: Payment entries are used for receipt requests as well as for receipt responses. ReceiptResponse_1: type: object properties: ftCashBoxID: type: string description: Allocated from request to response. nullable: true ftQueueID: type: string description: QueueId used for processing. nullable: true ftQueueItemID: type: string description: QueueItemId used for processing. nullable: true ftQueueRow: type: integer description: QueueRow used for processing. format: int64 cbTerminalID: type: string description: Allocated from request to response. nullable: true cbReceiptReference: type: string description: Allocated from request to response. nullable: true ftCashBoxIdentification: type: string description: Cash register identification number. nullable: true ftReceiptIdentification: type: string description: Upcounting receipt number allocated through fiskaltrust.SecurityMechanisms. nullable: true ftReceiptMoment: type: string description: "Time of receipt processing through fiskaltrust.Middleware,\ \ provided in UTC." format: date-time ftReceiptHeader: type: array description: Additional header for the receipt. Each row can contain up to 4096 characters. Line breaks should be inserted by the cash register independently nullable: true items: type: string ftChargeItems: type: array description: "Additional data sets in the charge items block which the cash\ \ register has to print onto the receipt. By default no additional data\ \ is provided. If additional data is provided, these data sets state an\ \ amount of „0“." nullable: true items: $ref: '#/components/schemas/ChargeItem_1' ftChargeLines: type: array description: "Additional text line for the charge items block which the\ \ cash register has to print onto the receipt. Each row can contain up\ \ to 4096 characters, line breaks should be inserted by the cash register\ \ independently." nullable: true items: type: string ftPayItems: type: array description: "Additional data set in the pay items block which the cash\ \ register has to print onto the receipt. By default no additional data\ \ is provided. If additional data is provided, these data sets state an\ \ amount of „0“." nullable: true items: $ref: '#/components/schemas/PayItem_1' ftPayLines: type: array description: "Additional text line for the pay items block which the cash\ \ register has to print onto the receipt. Each row can contain up to 4096\ \ characters, line breaks should be inserted by the cash register independently." nullable: true items: type: string ftSignatures: type: array description: "Signature block, which the cash register has to print onto\ \ the receipt." nullable: true items: $ref: '#/components/schemas/SignaturItem' ftReceiptFooter: type: array description: "Additional footer for the receipt. Each row can contain up\ \ to 4096 characters, line breaks should be inserted by the cash register\ \ independently." nullable: true items: type: string ftState: type: integer description: Flag indicating the status of the fiskaltrust.Middleware; set accordingly to the reference table in the appendix. format: int64 ftStateData: type: string description: "Additional information regarding the status of the fiskaltrust.Middleware,\ \ currently accepted only in JSON format." nullable: true additionalProperties: false description: The fiskaltrust.Middleware sends back the processed data to the cash register through the receipt response. SignaturItem: type: object properties: ftSignatureFormat: type: integer description: Format for displaying signature data according to the reference table in the appendix. format: int64 ftSignatureType: type: integer description: "Type of signature according to the reference table in the\ \ appendix, e.g.: signature indicating a failure notification" format: int64 caption: type: string description: "Heading, which has to be displayed as text above the signature\ \ data." nullable: true data: type: string description: Signature content which has to be displayed in the specified format. nullable: true additionalProperties: false description: The signature entry is only used for the receipt response. IssueRequestSimple: required: - ReceiptSimple type: object properties: ReceiptSimple: $ref: '#/components/schemas/ReceiptSimple' description: | request to issue receipt ReceiptSimple: required: - cbChargeItems - cbPayItems - cbReceiptMoment - cbReceiptReference - cbSignatureItems - cbTerminalId type: object properties: cbTerminalId: maxLength: 1023 type: string description: | The unique identification of the input-station/terminal within a cash-register/pos-system identified by `ftCashBoxID`. nullable: false default: undefined cbReceiptReference: maxLength: 1023 type: string description: | Reference number send by the cash register. This value must be a unique string/receipt number related to the calling cash register. This string/receipt number is a unique primary key of the dataset of the cash register. nullable: false default: undefined cbReceiptMoment: type: string description: | moment at which the receipt was create by the cash register, must be provided in UTC. format: date-time nullable: false example: 2020-06-29T17:45:40.505Z cbChargeItems: type: array description: | list of line items related to services and products items: $ref: '#/components/schemas/ChargeItem_2' cbPayItems: type: array description: "list of line items related to payments \n" items: $ref: '#/components/schemas/PayItem_2' cbSignatureItems: type: array description: "list of line items related to signatures \n" items: $ref: '#/components/schemas/SignatureItem_1' cbReceiptHeader: type: array description: | optional additional header lines to be printed on the receipt. items: maxLength: 1023 type: string nullable: false cbReceiptFooter: type: array description: "optional additional footer lines to be printed on the receipt.\ \ \n" items: maxLength: 1023 type: string nullable: false ftReceiptCase: type: integer description: | Type of business according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a cash register business case at the point-of-sale is used. format: uint64 nullable: false default: 0 ftReceiptCaseData: description: "optional gives additional details for defined type of business\ \ related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu\ \ !TODO! \n" oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false cbPreviousReceiptReference: maxLength: 1023 type: string description: | optional Reference `cbReceiptReference` of the previous receipt. Used to connect multiple requests for a single Business Case. nullable: true cbReceiptAmount: description: | optional total receipt amount, including value added taxes (=gross receipt amount) given to avoid calculation and rounding differences. systems which are using net amounts as central calculation should alsways use this property. if not provided, the sum of `Amount` in all provided `ftChargeItems` is used as total receipt amount. uses `DecimalPresissionMultiplier` as discriminator between int64 and double nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null cbUser: description: | optional Identification of the user, who creates the receipt. oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbArea: description: | optional Identification of the area/section/field, in which the receipt is created. e.g. Table number of a restaurant business; a department of a commercial establishment; the vehicle of a taxi company oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbCustomer: description: | optional Identification of the consumer, for whom the receipt is created. e.g. Email address, phone number, personal tax number oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null cbSettlement: description: "optional Settlement identification where this receipt will\ \ be added. e.g. shift number or day of operation \n" oneOf: - maxLength: 1023 type: string nullable: true - type: object properties: Description: maxLength: 1023 type: string nullable: true additionalProperties: true nullable: false default: null ftCashBoxId: type: string description: | optional identification of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftPosSystemId: type: string description: | optional identification of the used software of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftQueueId: type: string description: | optional routing instruction to identify a specific queue behind a load balancer or in other usecases format: uuid nullable: true Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | simplified receipt data format which can be used to issue receipts at fiskaltrust.Middleware with already given fiskalization data and without using the `sign` method to get a `ReceiptResponse` from a `ReceiptRequest` merchant onboarding and cashbox related to an outlet with a QueueEU (=European CloudCashBox) need to be done, before this can be used `ftCashBoxIdentification` is assigned by base64url(QueueId) `ftReceiptIdentification` is assigned by `ft{hex(QueueRow)}#{base64url(QueueItemId)} url is https://s.ft.ms/{base64url(QueueItemId)} ChargeItem_2: required: - Amount - Description - Quantity - VATRate type: object properties: ChargeItemId: type: string description: | optional used as an identifier of a chargeitem, when reading data format: uuid nullable: true readOnly: true Quantity: description: | defines the quantity of the line item. quantities of line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 1 - type: number format: double nullable: false default: 1.0 Description: maxLength: 1023 type: string description: | defines the description of the line item. line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization nullable: true Amount: description: | defines the (total) amount of the line item. to get itemprice the amount need to be devided by quantity. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 VATRate: description: | defines the value added tax rate in percentage of the line item. line items with same `Description`, `VATRate` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 ftChargeItemCase: type: integer description: | optional defines the type of service or product related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a service or product delivered at the point-of-sale with defined `VATRate` is used. format: uint64 nullable: false default: 0 ftChargeItemCaseData: description: | optional gives additional details for defined type of service or product related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false VATAmount: description: | optional when given and not null this amount is used as the (total) value added taxes amount for the line item to avoid rounding when accumulating value added taxes. systems which are using net amounts as central calculation should alsways use this property. uses `DecimalPresissionMultiplier` as discriminator between int64 and double nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null Moment: type: string description: | optional moment at which the serivce or product was ordered or delivered, must be provided in UTC. accumulated line items get the minimum (first) moment. if not given, the `cbReceiptMoment` is used as fallback format: date-time nullable: true example: 2020-06-29T17:45:40.505Z Position: description: | optional used to sort and group the line items for receipt visualization. accumulated line items get the minimum (first) position. uses `DecimalPresissionMultiplier` as discriminator between int64 and double with a specific instruction/flag in `ftReceiptCase` a grouping of multiple line items can be activated. if this is the case, `Position` is threaded as a decimal number, the whole number represents the grouped line item and the fraction part is used within the group oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 AccountNumber: maxLength: 1023 type: string description: | optional account number for bookkeeping export purpose nullable: true CostCenter: maxLength: 1023 type: string description: | optional cost center for cost accounting purpose nullable: true ProductGroup: maxLength: 1023 type: string description: | optional product group related to line item nullable: true ProductNumber: maxLength: 1023 type: string description: | optional product number related to line item nullable: true ProductBarcode: maxLength: 1023 type: string description: | optional product barcode related to line item nullable: true Unit: maxLength: 1023 type: string description: | optional unit of measurement for the line item. e.g. you have on one charging session of an electric vehicle, this would be `Quantity` 1 and the total amount of the session within `amount`. the unit of measurement could be `kW` for dc charging or `min` for ac charging. nullable: true UnitQuantity: description: | optional the quantity related to the unit of measurement defined in `Unit`. uses `DecimalPresissionMultiplier` as discriminator between int64 and double e.g. you have on one charging session of an electric vehicle, this would be `Quantity` 1 and the total amount of the session within `amount`. if the unit of measurement is `kW` for dc charging the `UnitQuantity` could be 65.4 as an example. which would mean the line item represents a charging session with a total amout of power of 65.4kW. nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null UnitPrice: description: "optional the price related to the unit of measurement defined\ \ in `Unit`. uses `DecimalPresissionMultiplier` as discriminator between\ \ int64 and double e.g. you have on one charging session of an electric\ \ vehicle, this would be `Quantity` 1 and as example the total amount\ \ of 30.7 of the session within `amount`. if the unit of measurement is\ \ `kW` for dc charging the `UnitQuantity` could be 65.4 as an example\ \ and for the given total amount the `UnitPrice` would be 0.5. which would\ \ mean the line item represents a charging session with a total amout\ \ of power of 65.4kW with a price per kW of 0.5. \n" nullable: true oneOf: - type: integer format: int64 - type: number format: double default: null Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | represents a item related to a service or a product, taxable PayItem_2: required: - Amount - Description type: object properties: PayItemId: type: string description: | optional used as an identifier of a chargeitem, when reading data format: uuid nullable: true readOnly: true Quantity: description: | defines the quantity of the line item. quantities of line items with same `Description` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 1 - type: number format: double nullable: false default: 1.0 Description: maxLength: 1023 type: string description: | defines the description of the line item. line items with same `Description` and itemprice (=`Amount`/`Quantity`) can be accumulated for better visualization nullable: true Amount: description: | defines the (total) amount of the line item. uses `DecimalPresissionMultiplier` as discriminator between int64 and double oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 ftPayItemCase: type: integer description: | optional defines the type of payment related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! this is relevant for fiskaltrust middleware processing and is a country specific mapping. as fallback when not specified, a cah payment at the point-of-sale is used. format: uint64 nullable: false default: 0 ftPayItemCaseData: description: | optional gives additional details for defined type of payment related to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false Moment: type: string description: | optional moment at which the payment was executed, must be provided in UTC. accumulated line items get the minimum (first) moment. if not given, the `cbReceiptMoment` is used as fallback format: date-time nullable: true example: 2020-06-29T17:45:40.505Z Position: description: "optional used to sort and group the line items for receipt\ \ visualization. accumulated line items get the minimum (first) position.\ \ uses `DecimalPresissionMultiplier` as discriminator between int64 and\ \ double with a specific instruction/flag in `ftReceiptCase` a grouping\ \ of multiple line items can be activated. if this is the case, `Position`\ \ is threaded as a decimal number, the whole number represents the grouped\ \ line item and the fraction part is used within the group \n" oneOf: - type: integer format: int64 nullable: false default: 0 - type: number format: double nullable: false default: 0.0 AccountNumber: maxLength: 1023 type: string description: | optional account number for bookkeeping export purpose nullable: true CostCenter: maxLength: 1023 type: string description: | optional cost center for cost accounting purpose nullable: true MoneyGroup: maxLength: 1023 type: string description: | optional group related to line item nullable: true MoneyNumber: maxLength: 1023 type: string description: | optional number related to line item nullable: true MoneyBarcode: maxLength: 1023 type: string description: | optional barcode or serialnumber related to line item nullable: true Currency: $ref: '#/components/schemas/CurrencyEnum' DecimalPrecisionMultiplier: $ref: '#/components/schemas/DecimalPrecisionMultiplierEnum' description: | represents a item related to a payment SignatureItem_1: required: - Data - ftSignatureFormat - ftSignatureType type: object properties: SignaturItemId: type: string description: | optional used as an identifier of a signautreitem, when reading data format: uuid nullable: true readOnly: true ftSignatureFormat: type: integer description: | Format for displaying signature data according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! format: uint64 nullable: false default: 0 ftSignatureType: type: integer description: | Type of signature according to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! format: uint64 default: 0 Caption: maxLength: 1023 type: string description: | optional Heading, which has to be displayed as text above the signature data. nullable: true Data: description: "optional Signature content which has to be displayed in the\ \ specified format. \n" oneOf: - type: string nullable: true - type: object additionalProperties: true nullable: false description: | The signature of the receipt must comply with the national law. The signature data returned in the response must be visualized on the receipt related to format instruction and to fiskaltrust reference. for detailed definition goto https://docs.fiskaltrust.eu !TODO! The signature entries can also be used to visualize hints and messages related to the fiskaltrust.SecurityMechanism. IssueRequestQueueItem: required: - QueueId - QueueItemId type: object properties: QueueID: type: string format: uuid nullable: false QueueItemID: type: string format: uuid nullable: false additionalProperties: false description: | request to issue receipt by queueid and queueitemid IssueResponse: required: - QueueId - QueueItemId properties: ftQueueID: type: string format: uuid nullable: false ftQueueItemID: type: string format: uuid nullable: false DocumentURL: type: string format: uri nullable: false DocumentContentType: type: string nullable: true description: | result of issued receipt IssueUpdate: required: - Action type: object properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' description: | accept receipt action [accept,view] IssueUpdateActionEnum: type: string enum: - accept - view - download - print - link - send - upload IssueUpdateLink: required: - Action properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' Target: $ref: '#/components/schemas/IssueUpdateLink_Target' Handout: type: boolean default: false description: | accept receipt action: link IssueUpdateDownload: required: - Action properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' Format: $ref: '#/components/schemas/IssueUpdateFormatEnum' description: | accept receipt action [download] IssueUpdateFormatEnum: type: string enum: - text/html - text/plain - application/pdf - image/png - image/jpeg - text/vnd.esc-pos;charset=utf-8 IssueUpdatePrint: required: - Action properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' Format: $ref: '#/components/schemas/IssueUpdateFormatEnum' Width: type: integer EscPosBrand: $ref: '#/components/schemas/IssueUpdateEscPosBrandEnum' description: | print receipt action [print] IssueUpdateEscPosBrandEnum: type: string enum: - none - epson - tousei IssueUpdateSend: required: - Action properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' Format: $ref: '#/components/schemas/IssueUpdateFormatEnum' Target: $ref: '#/components/schemas/IssueUpdateSend_Target' description: | accept receipt action [send] IssueUpdateUpload: required: - Action properties: Action: $ref: '#/components/schemas/IssueUpdateActionEnum' Format: $ref: '#/components/schemas/IssueUpdateFormatEnum' Filename: type: string Filecontent: type: string format: binary description: | accept receipt IssueRequestState: required: - OperationId - State type: object description: | reflects a single state event of a issue request allOf: - $ref: '#/components/schemas/OperationState' - type: object properties: QueueItemID: type: string format: uuid nullable: true PaymentRequest: required: - Action - Protocol - cbPayItem type: object properties: Protocol: $ref: '#/components/schemas/PaymentProtocolEnum' Action: $ref: '#/components/schemas/PaymentActionEnum' cbPayItem: $ref: '#/components/schemas/PayItem' AcceptUnderPayment: type: boolean default: false AcceptOverPayment: type: boolean default: true cbTerminalID: maxLength: 1023 type: string description: "The unique identification of the input-station/terminal within\ \ a cash-register/pos-system identified by `ftCashBoxID`. \n" nullable: false default: undefined ftCashBoxID: type: string description: | identification of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftPosSystemID: type: string description: | identification of the used software of the cash register format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 PaymentProtocolEnum: type: string description: | a list of supported protocols use_first can be used to use first detected payment protocol for the specific cashboxid/terminalid combination use_all triggers all available payment protocols for the specific cashboxid/terminalid combination and uses first successfull use_auto triggers a automaticaly selected, single payment protocol, best match for given PayItemCase use_none asks the customer, to select one default: use_auto enum: - use_first - use_all - use_auto - use_none - bluecode - hobex_zvt - hobex_restapi - hobex_softpos_posit - gp_softpos_gptom - gp_mpas - gp_zvt - payone_softpos_wpi - payone_serverapi - payone_fistdata - worldline_wpi_1_3 - worldline_wpi_2 PaymentActionEnum: type: string description: | a list of supported actions not each protocol supports each action enum: - payment - cancel - refund - pre_authorization - other PaymentResponse: required: - Protocol - ftPayItems - ftQueueId type: object properties: Protocol: $ref: '#/components/schemas/PaymentProtocolEnum' ftQueueID: type: string description: | identification of the queue used for processing format: uuid nullable: false default: 00000000-0000-0000-0000-000000000000 ftPayItems: type: array items: $ref: '#/components/schemas/PayItem' PayRequestState: required: - OperationId - State type: object description: | reflects as single state event of a pay request allOf: - $ref: '#/components/schemas/OperationState' - type: object properties: PayItemID: type: string format: uuid nullable: true StorageTypeEnum: type: string enum: - OperationItem - OperationStateJournal - PayItem - ChargeItem - QueueItem - IssueItem - ActionJournal - ReceiptJournal OperationItem: required: - LastState - OperationId properties: OperationID: type: string description: | operationid format: uuid nullable: false Method: type: string Path: type: string Header: type: object Request: type: object Response: type: object LastState: $ref: '#/components/schemas/OperationStateEnum' description: | reflects a single operation issue_body: oneOf: - $ref: '#/components/schemas/IssueRequest' - $ref: '#/components/schemas/IssueRequestSimple' - $ref: '#/components/schemas/IssueRequestQueueItem' QueueId_QueueItemId_body: discriminator: propertyName: Action mapping: accept: '#/components/schemas/IssueUpdate' view: https://api.swaggerhub.com/domains/fiskaltrust/fiskaltrust-model/2.0#/components/schemas/IssueUpdate download: '#/components/schemas/IssueUpdateDownload' print: '#/components/schemas/IssueUpdatePrint' link: '#/components/schemas/IssueUpdateLink' send: '#/components/schemas/IssueUpdateSend' upload: '#/components/schemas/IssueUpdateUpload' oneOf: - $ref: '#/components/schemas/IssueUpdate' - $ref: '#/components/schemas/IssueUpdateLink' - $ref: '#/components/schemas/IssueUpdateDownload' - $ref: '#/components/schemas/IssueUpdatePrint' - $ref: '#/components/schemas/IssueUpdateSend' - $ref: '#/components/schemas/IssueUpdateUpload' IssueRequest_body: oneOf: - $ref: '#/components/schemas/IssueRequest' - $ref: '#/components/schemas/IssueRequestSimple' - $ref: '#/components/schemas/IssueRequestQueueItem' QueueId_QueueItemId_body_1: discriminator: propertyName: Action mapping: accept: '#/components/schemas/IssueUpdate' view: https://api.swaggerhub.com/domains/fiskaltrust/fiskaltrust-model/2.0#/components/schemas/IssueUpdate download: '#/components/schemas/IssueUpdateDownload' print: '#/components/schemas/IssueUpdatePrint' link: '#/components/schemas/IssueUpdateLink' send: '#/components/schemas/IssueUpdateSend' upload: '#/components/schemas/IssueUpdateUpload' oneOf: - $ref: '#/components/schemas/IssueUpdate' - $ref: '#/components/schemas/IssueUpdateLink' - $ref: '#/components/schemas/IssueUpdateDownload' - $ref: '#/components/schemas/IssueUpdatePrint' - $ref: '#/components/schemas/IssueUpdateSend' - $ref: '#/components/schemas/IssueUpdateUpload' inline_response_200: discriminator: propertyName: StorageType mapping: OperationItem: '#/components/schemas/OperationItem' OperationStateJournal: '#/components/schemas/OperationState' PayItem: '#/components/schemas/PayItem' ChargeItem: '#/components/schemas/ChargeItem' oneOf: - $ref: '#/components/schemas/OperationItem' - $ref: '#/components/schemas/OperationState' - $ref: '#/components/schemas/PayItem' - $ref: '#/components/schemas/ChargeItem' inline_response_200_1: type: object properties: CashBoxID: type: string format: uuid AccessToken: type: string format: byte IssueUpdateLink_Target: type: object properties: Host: type: string format: uri Path: type: string IssueUpdateSend_Target: type: object properties: Scheme: type: string enum: - email - sms - whatsapp Address: type: string Attach: type: string enum: - none - pdf - png Send: type: boolean default: true responses: Unauthorized: description: Access token is not set or invalid. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: unauthorized: $ref: '#/components/examples/unauthorized' ServerError: description: The server encountered an unexpected error content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: serverError: $ref: '#/components/examples/server-error' NotFound: description: The requested resource was not found. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' examples: notFound: $ref: '#/components/examples/not-found' PairResponse: description: | response credentials content: application/json: schema: $ref: '#/components/schemas/inline_response_200_1' examples: unauthorized: value: type: about:blank title: Unauthorized detail: Access token not set or invalid. The requested resource could not be returned status: 401 server-error: value: type: about:blank title: Server Error detail: The server encountered an unexpected error status: 500 not-found: value: type: about:blank title: Not found detail: The requested resource was not found status: 404 PayRequestHobexPaymentMinimum_1: description: | request a payment amount is EUR 1.50 chooses a payment-device assigned to `cbTerminalId` by itself value: Action: payment Protocol: use_auto cbPayItem: Description: Card Amount: 1.5 cbTerminalId: 1 PayRequestHobexRestApiCancelMinimum_1: description: | request a cancellation of an previoiuse payment protocoll comes from previouse payment depending on the payment service, the `cbTerminalId` need to be same as previouse action to cancel value: Action: cancel Protocol: hobex_restapi cbPayItem: Description: Card Amount: 1.5 ftPayItemCaseData: Provider: Protocol: hobex_restapi Action: payment ProtocolRequest: transaction: transactionType: 1 transactionId: "20181009140821075" tid: "3510224" currency: EUR reference: "123" amount: 1.5 language: DE ProtocolResponse: transactionId: "20181009140821075" originalTransactionId: "" tid: "3510224" receipt: "632030" approvalCode: "00884601" reference: "123" transactionDate: 2018-10-09T14:07:00.9436463+02:00 cardNumber: XXXXXXXXXXXX5401 cardExpiry: "1220" brand: Maestro cardIssuer: MAESTRO transactionType: SELL currency: EUR amount: 1.5 responseCode: "0" responseText: OK cvm: 3 Moment: 2020-06-29T17:45:40.505Z cbTerminalId: 1 PayRequestHobexRestApiRefundMinimum_1: description: | request a refund refunded (given back to the consumer) amount is EUR 1.00 chooses a payment-device assigned to `cbTerminalId` by itself value: Action: refund Protocol: use_auto cbPayItem: Description: Card Amount: 1 cbTerminalId: 1 PayRequestHobexRestApiPreAuthMinimum_1_1: description: | request a preauthorization authorize for an amount of EUR 12.0, and capture later EUR 7.0, and release later EUR 5.0 chooses a payment-device assigned to `cbTerminalId` by itself value: Action: pre_authorization Protocol: use_auto AcceptUnderPayment: true cbPayItem: Description: Card Amount: 12 cbTerminalId: 1 PayRequestHobexRestApiPreAuthMinimum_1_2: description: | request capture of EUR 7.0 of a preauthorization value: Action: payment Protocol: hobex_restapi cbPayItem: Description: Card Amount: 7 ftPayItemCase: 14757170079003049989 ftPayItemCaseData: Provider: Protocol: hobex_restapi Action: pre_authorization ProtocolRequest: transaction: transactionType: 2 transactionId: "20191106143525590" tid: "3512197" currency: EUR reference: "1234" amount: 12 ProtocolResponse: transactionId: "20191106143525590" originalTransactionId: "" tid: "3512197" receipt: "527242" approvalCode: "00168826" reference: "1234" transactionDate: 2019-11-06T14:35:25.5908109+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MasterCard transactionType: PREAUTH currency: EUR amount: 12 responseCode: "0" responseText: OK cvm: 0 cbTerminalId: 1 PayRequestHobexRestApiPreAuthMinimum_1_3: description: | request cancel of EUR 5.0 of a preauthorization value: Action: cancel Protocol: hobex_restapi cbPayItem: Description: Card Amount: 5 AllowUnderPayment: true ftPayItemCase: 14757170079003049989 ftPayItemCaseData: Provider: Protocol: hobex_restapi Action: pre_authorization ProtocolRequest: transaction: transactionType: 2 transactionId: "20191106143525590" tid: "3512197" currency: EUR reference: "1234" amount: 12 ProtocolResponse: transactionId: "20191106143525590" originalTransactionId: "" tid: "3512197" receipt: "527242" approvalCode: "00168826" reference: "1234" transactionDate: 2019-11-06T14:35:25.5908109+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MasterCard transactionType: PREAUTH currency: EUR amount: 12 responseCode: "0" responseText: OK cvm: 0 cbTerminalId: 1 PayResponseHobexRestApiPaymentMinimum_1: description: | response to PayRequestHobexPaymentMinimum_1 value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Description: Card Amount: 1.5 ftPayItemCase: 14757170079003049989 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: payment ProtocolRequest: transaction: transactionType: 1 transactionId: "20181009140821075" tid: "3510224" currency: EUR reference: "123" amount: 1.5 language: DE ProtocolResponse: transactionId: "20181009140821075" originalTransactionId: "" tid: "3510224" receipt: "632030" approvalCode: "00884601" reference: "123" transactionDate: 2018-10-09T14:07:00.9436463+02:00 cardNumber: XXXXXXXXXXXX5401 cardExpiry: "1220" brand: Maestro cardIssuer: MAESTRO transactionType: SELL currency: EUR amount: 1.5 responseCode: "0" responseText: OK cvm: 3 Moment: 2020-06-29T17:45:40.505Z PayResponseHobexRestApiCancelMinimum_1: description: | response to PayRequestHobexCancelMinimum_1 value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Quantity: -1000 Description: Card Amount: -1.5 ftPayItemCase: 14757170079003115525 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: cancel ProtocolRequest: transactionId: "20180809152649657" tid: "3510009" ProtocolResponse: transactionId: "20180918141600323" originalTransactionId: "20180809152649657" tid: "3510009" receipt: "551870" approvalCode: "230744" reference": null transactionDate: 2018-09-18T14:16:00.3231109+02:00 cardNumber: XXXXXXXXXXXX5401 cardExpiry: "1220" brand: Maestro cardIssuer: MAESTRO transactionType: VOID currency: EUR amount": 1 responseCode: "0" responseText: OK cvm: 0 Moment: 2018-09-18T12:16:00.32Z PayResponseHobexRestApiRefundMinimum_1: description: | response to PayRequestHobexRestApiRefundMinimum_1 value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Quantity: -1 Description: Card Amount: -1 ftPayItemCase: 14757170079003181061 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: cancel ProtocolRequest: transaction: transactionId: "20191106143525590" tid: "3512197" currency: EUR reference: "1234" amount: 1 ProtocolResponse: transactionId: "20191106143525590" originalTransactionId: "" tid: "3512197" receipt: "527242" approvalCode: "00168826" reference: "1234" transactionDate: 2019-11-06T14:35:25.5908109+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MASTERCARD transactionType: REFUND currency: EUR amount: 1 responseCode: "0" responseText: OK cvm: 3 Moment: 2019-11-06T13:35:25.59Z PayResponseHobexRestApiPreAuthMinimum_1_1: description: | response to PayRequestHobexRestApiPreAuthMinimum_1_1 value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Description: Card Amount: 0 ftPayItemCase: 14757170079003049989 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: pre_authorization ProtocolRequest: transaction: transactionType: 2 transactionId: "20191106143525590" tid: "3512197" currency: EUR reference: "1234" amount: 12 ProtocolResponse: transactionId: "20191106143525590" originalTransactionId: "" tid: "3512197" receipt: "527242" approvalCode: "00168826" reference: "1234" transactionDate: 2019-11-06T14:35:25.5908109+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MasterCard transactionType: PREAUTH currency: EUR amount: 12 responseCode: "0" responseText: OK cvm: 0 Moment: 2019-11-06T13:35:25.59Z PayResponseHobexRestApiPreAuthMinimum_1_2: description: "response to PayRequestHobexRestApiPreAuthMinimum_1_2 capture of\ \ \n" value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Description: Card Amount: 7 ftPayItemCase: 14757170079003181061 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: payment ProtocolRequest: transaction: transactionId: "20191108075925144" tid: "3512197" currency: EUR reference: "1234" amount: 7 ProtocolResponse: transactionId: "20191108092959089" originalTransactionId: "20191108075925144" tid: "3512197" receipt: "541586" approvalCode: "812634" reference: "1234" transactionDate: 2019-11-08T09:29:58.9177136+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MasterCard transactionType: CAPTURE currency: EUR amount: 7 responseCode: "0" responseText: OK cvm: 0 Moment: 2019-11-08T08:29:58.91Z PayResponseHobexRestApiPreAuthMinimum_1_3: description: | response to PayRequestHobexRestApiPreAuthMinimum_1_3 value: Protocol: hobex_restapi ftQueueId: 00000000-0000-0000-0000-xxxxxxxxxxxx ftPayItems: - ftPayItemId: 00000000-0000-0000-0000-xxxxxxxxxxxx Description: Card Amount: 0 ftPayItemCase: 14757170079003115525 ftPayItemCaseData: Receipt: - Line1 - Line2 - Line3 - Line4 Provider: Protocol: hobex_restapi Action: cancel ProtocolRequest: transaction: transactionType: 7 transactionId: "20191108075925144" tid: "3512197" currency: EUR reference: "1234" amount: 5 ProtocolResponse: transactionId: "20191108092959089" originalTransactionId: "20191108075925144" tid: "3512197" receipt: "541586" approvalCode: "812634" reference: "1234" transactionDate: 2019-11-08T09:29:58.9177136+01:00 cardNumber: XXXXXXXXXXXX1227 cardExpiry: "0121" brand: MasterCard cardIssuer: MasterCard transactionType: VOID currency: EUR amount: 5 responseCode: "0" responseText: OK cvm: 0 Moment: 2019-11-08T08:29:58.91Z requestBodies: PairRequest: description: | use to get credentials for initial setup content: application/json: schema: type: object properties: Pin: maxLength: 1023 type: string securitySchemes: CashBoxId: type: apiKey name: x-cashbox-id in: header CashBoxAccessToken: type: apiKey name: x-cashbox-accesstoken in: header callbacks: OperationFinalized: OperationCallbackFinalizedUrl: post: parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/OperationItem' responses: "200": description: | successfull "201": description: | successfull created default: description: "unexpected error \n" OperationState: OperationCallbackStateUrl: post: parameters: - name: x-operation-id in: header required: true style: simple explode: false schema: $ref: '#/components/schemas/x-operation-id' requestBody: content: application/json: schema: $ref: '#/components/schemas/OperationState' responses: "200": description: | successfull "201": description: | successfull created default: description: unexpected error