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.<br/>\n<br/>\n<h3>API design principles</h3><p>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. </p>\n\n  <h4>Authentication</h4><p>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 <i>CashBox Configuration page</i>.You will need both <code>CashBoxId</code> and <code>AccessToken</code> to use this API.</p>\n  \n  <h4>Versioning</h4><p>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.</p><ul><li>The latest version is used if no version is specified (like in the samples in this collection).</li><li>Users can specify versions by explicitly stating it in the URL once more versions are released.</li></ul>\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.1"
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: cart
  description: |
    omnichannel journey
- 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
        schema:
          $ref: "#/components/schemas/x-operation-id"
        example: af60144d-5c1b-4b56-9706-1e80c9ed1705
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-state"
      - name: x-terminal-id
        in: header
        description: |
          identifies the terminal  #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: 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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
  /cart:
    post:
      tags:
      - SynchronAPI
      summary: exectue a cart call end-to-end
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: |
            successfull, response from existing item
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_200"
        "201":
          description: |
            successfull created, response from queue
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_201"
        "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"
  /cart/{JourneyId}:
    get:
      tags:
      - SynchronAPI
      summary: get content of a journey
      description: |
        get content of a journey, without updateing the submitted state
      parameters:
      - name: JourneyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      responses:
        "200":
          description: |
            (OK) successfull
          content:
            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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
    put:
      tags:
      - SynchronAPI
      summary: updates an ongoing journey
      description: |
        execute a journey update call end-to-end
      parameters:
      - name: JourneyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: X-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: |
            (OK) successfull
        "201":
          description: |
            (Created) successfull
        "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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
    delete:
      tags:
      - SynchronAPI
      summary: close ongoing journey
      description: close ongoing journey
      parameters:
      - name: JourneyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: X-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      responses:
        default:
          description: "unexpected error \n"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
  /CartRequest:
    post:
      tags:
      - cart
      summary: starts a cart request
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      requestBody:
        content:
          application/json:
            schema:
              type: object
      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:
      - cart
      summary: |
        stops a ongoing cart request
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        default:
          description: "unexpected error \n"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
        OperationFinalized:
          $ref: "#/components/callbacks/OperationFinalized"
  /PeekCartRequestState:
    get:
      tags:
      - cart
      summary: get state of cart request
      description: |
        get state of pay request
      parameters:
      - name: x-operation-id
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        "200":
          description: |
            successfull
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/CartRequestState"
        "400":
          description: |
            not successfull
        default:
          description: |
            unexpected error
  /CartResponse:
    post:
      tags:
      - cart
      summary: |
        get result of a pay request and purges state from queue/processor
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        "200":
          description: |
            successfull
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_200"
        "400":
          description: |
            not successfull
        default:
          description: "unexpected error  \n"
  /BlockCartRequest/{JourneyId}/WhilePaymentDone:
    get:
      tags:
      - cart
      summary: blocks for a maxiumum timeout in second (default is 15) and comes back with 200 if payment done and 204 if payment not done
      description: |
        TBD
      parameters:
      - name: JourneyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: Timeout
        in: query
        required: false
        schema:
          type: number
          format: int
          nullable: false
          default: 15
      responses:
        "200":
          description: |
            (OK) successfull payment was done
          content:
            application/json:
              schema:
                type: object
        "204":
          description: |
            (No Content) successfull payment was not done
        "404":
          description: |
            QueueId or QueueItemId doesn't exist
        default:
          description: "unexpected error                    \n"
  /order:
    post:
      tags:
      - SynchronAPI
      summary: exectue a order call end-to-end
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-id"
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: |
            successfull, response from existing item
          content:
            application/json:
              schema:
                type: object
        "201":
          description: |
            successfull created, response from queue
          content:
            application/json:
              schema:
                type: object
        "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 order call
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-id"
      responses:
        default:
          description: "unexpected error \n"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
  /OrderRequest:
    post:
      tags:
      - order
      summary: starts a order request
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      requestBody:
        content:
          application/json:
            schema:
              type: object
      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:
      - order
      summary: |
        stops a ongoing pay request
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        default:
          description: "unexpected error \n"
      callbacks:
        OperationState:
          $ref: "#/components/callbacks/OperationState"
        OperationFinalized:
          $ref: "#/components/callbacks/OperationFinalized"
  /PeekOrderRequestState:
    get:
      tags:
      - order
      summary: get state of order request
      description: |
        get state of pay request
      parameters:
      - name: x-operation-id
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        "200":
          description: |
            successfull
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/OrderRequestState"
        "400":
          description: |
            not successfull
        default:
          description: |
            unexpected error
  /OrderResponse:
    post:
      tags:
      - order
      summary: |
        get result of a pay request and purges state from queue/processor
      parameters:
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      responses:
        "200":
          description: |
            successfull
          content:
            application/json:
              schema:
                type: object
        "400":
          description: |
            not successfull
        default:
          description: "unexpected error  \n"
  /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
        schema:
          $ref: "#/components/schemas/x-operation-id"
        example: 00000000-0000-0000-0000-000000000000
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-state"
      - name: x-terminal-id
        in: header
        description: |
          identifies the terminal  #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ReceiptRequest"
            examples:
              ReceiptRequestMinimum1:
                $ref: "#/components/examples/SignRequestReceipt_Minimum1"
              ReceiptRequestMinimum2:
                $ref: "#/components/examples/SignRequestReceipt_Minimum2"
              ReceiptRequestMinimum3:
                $ref: "#/components/examples/SignRequestReceipt_Minimum3"
              ReceiptRequestMinimum4:
                $ref: "#/components/examples/SignRequestReceipt_Minimum4"
              RequestReceipt_DailyOperation_ZeroReceipt:
                $ref: "#/components/examples/SignRequestReceipt_DailyOperation_ZeroReceipt"
              SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_1:
                $ref: "#/components/examples/SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_1"
              SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_2:
                $ref: "#/components/examples/SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_2"
              SignRequestReceipt_DrawerMoneyManagement_1:
                summary: move money from the vault to the drawer
                description: |
                  move money from the vault to the drawer using cbChargeItems for the vault side cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: move money from vault to drawer
                    Amount: 500
                    VATRate: 0
                    ftChargeItemCase: 35184372089000
                  cbPayItems:
                  - Description: Cash
                    Amount: 500
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_DrawerMoneyManagement_2:
                summary: move money from the drawer to the vault
                description: |
                  move money from the drawer to the vault using cbChargeItems for the vault side cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: move money from drawer to vault
                    Amount: -500
                    VATRate: 0
                    ftChargeItemCase: 35184372089000
                  cbPayItems:
                  - Description: Cash
                    Amount: -500
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_DrawerMoneyManagement_3:
                summary: move money from the vault to the drawer
                description: |
                  move money from the vault to the drawer using cbPayItem for the vault side cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems: []
                  cbPayItems:
                  - Description: Vault
                    Amount: -500
                    ftPayItemCase: 35184372088844
                  - Description: Cash
                    Amount: 500
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_DrawerMoneyManagement_4:
                summary: move money from the drawer to the vault
                description: |
                  move money from the drawer to the vault using cbPayItems for the vault side cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems: []
                  cbPayItems:
                  - Description: Vault
                    Amount: 500
                    ftPayItemCase: 35184372088844
                  - Description: Cash
                    Amount: -500
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_DrawerMoneyManagement_5:
                summary: open drawer
                description: |
                  open drawer cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372101121
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_DrawerMoneyManagement_6:
                summary: "move money to consumer, e.g. atm/from debit card"
                description: |
                  move money to consumer atm feature / from debit card cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems: []
                  cbPayItems:
                  - Description: Debit Card
                    Amount: 500
                    ftPayItemCase: 35184372088836
                  - Description: Cash
                    Amount: -500
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_DrawerMoneyManagement_7:
                summary: pay in foreign currency and give change in local currency
                description: |
                  pay in foreign currency give change in local currency cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2025-05-27T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Coffee
                    Amount: 5
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  cbPayItems:
                  - Description: Cash
                    Amount: 8.849558
                    ftPayItemCase: 35184373137409
                    ftPayItemCaseData:
                      foreignCurrencySymbol: USD
                      foreignCurrencyAmount: 10
                  - Description: Cash
                    Amount: -3.85
                    ftPayItemCase: 35184374185985
              SignRequestReceipt_CopyReceipt_1:
                summary: "most simple ReceiptRequest examplte, which uses unknown tagging as a fallback"
                description: |
                  long description cbTerminalId comes from Header ftReceiptCase fallback to 0xCCCC_2000_0000_0000 ftChargeItemCase fallback to 0xCCCC_2000_0000_0000 ftPayItemCase fallback to 0xCCCC_20000_0000_0000 with line breaks
                value:
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                  cbPayItems:
                  - Description: Cash
                    Amount: 8.2
              SignRequestReceipt_CopyReceipt_2:
                summary: create a duplicate from previouse receipt
                description: |
                  duplicate cbTerminalId comes from Header
                value:
                  cbReceiptCase: 35184372101136
                  cbReceiptReference: copy-1234
                  cbPreviouseReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_Discount_1:
                summary: 10% discount to the cart
                description: |
                  long description cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Position: 1
                    Quantity: 1
                    Description: Dress
                    Amount: 150
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Position: 1.1
                    Quantity: 1
                    Description: 10% off
                    Amount: -15
                    VATRate: 20
                    ftChargeItemCase: 35184372350995
                  - Position: 2
                    Quantity: 1
                    Description: Shoes
                    Amount: 70
                    VATRate: 20
                    ftChargeItemCase: 35184374186003
                  - Position: 2.1
                    Quantity: 1
                    Description: 10% off
                    Amount: -7
                    VATRate: 20
                    ftChargeItemCase: 35184372350995
                  cbPayItems:
                  - Description: Cash
                    Amount: 193
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_Discount_2:
                summary: coupon from referal
                description: |
                  long description cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "2345"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Position: 1
                    Quantity: 1
                    Description: Dress
                    Amount: 150
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Position: 1.1
                    Quantity: 1
                    Description: coupon 2345
                    Amount: -50
                    VATRate: 20
                    ftChargeItemCase: 35184372350995
                  - Position: 2
                    Quantity: 1
                    Description: Shoes
                    Amount: 70
                    VATRate: 20
                    ftChargeItemCase: 35184374186003
                  cbPayItems:
                  - Description: Cash
                    Amount: 170
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_Discount_3:
                summary: buy 3 pay 2
                description: |
                  long description cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "3456"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Position: 1
                    Quantity: 1
                    Description: Dress
                    Amount: 87
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Position: 2
                    Quantity: 1
                    Description: Dress
                    Amount: 95
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Position: 3
                    Quantity: 1
                    Description: Dress
                    Amount: 69
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Position: 3.1
                    Quantity: 1
                    Description: buy 3 pay 2
                    Amount: -69
                    VATRate: 20
                    ftChargeItemCase: 35184372350995
                  cbPayItems:
                  - Description: Cash
                    Amount: 182
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_ItalyLotterie_1:
                summary: "lotterei, coffee paid via creditcard"
                description: |
                  long description cbTerminalId comes from Header
                value:
                  ftReceiptCase: 35184372088833
                  ftReceiptCaseData:
                    servizi_lotteriadegliscontrini_gov_it:
                      codicelotteria: KPSAVX2L
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.3
                    VATRate: 10
                    ftChargeItemCase: 35184372088867
                  cbPayItems:
                  - Description: CreditCard
                    Amount: 3.5
                    ftPayItemCase: 35184372088837
              SignRequestReceipt_multiple_orders_one_final_retail_receipt_1:
                summary: |
                  1/3 open table order, and get receipt
                description: |
                  first order, beer long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101124
                  cbReceiptReference: order-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  cbPayItems: []
              SignRequestReceipt_multiple_orders_one_final_retail_receipt_2:
                summary: |
                  2/3 open table order, and get receipt
                description: |
                  second order, coffee long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101124
                  cbReceiptReference: order-23456
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  cbPayItems: []
              SignRequestReceipt_multiple_orders_one_final_retail_receipt_5:
                summary: |
                  3/3 open table order, and get receipt
                description: |
                  final receipt with all orders and payments long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-12345
                  cbPreviousReceiptReference:
                  - order-12345
                  - order-23456
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  cbPayItems:
                  - Description: Cash
                    Amount: 8.2
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_one_order_one_final_retail_receipt_1:
                summary: |
                  1/2 open table, one order, and get receipt
                description: |
                  first order, beer long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101124
                  cbReceiptReference: order-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  cbPayItems: []
              SignRequestReceipt_one_order_one_final_retail_receipt_5:
                summary: |
                  2/2 open table, one order, and get receipt
                description: |
                  final receipt with all orders and payments long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-12345
                  cbPreviousReceiptReference: order-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088867
                  cbPayItems:
                  - Description: Cash
                    Amount: 4.6
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_Order_Order_Receipt_Pay_1_1:
                summary: |
                  1/4 order multiple times a round of beer, pay in cash next day
                description: |
                  order first round of beer long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101124
                  cbReceiptReference: order-12345
                  cbReceiptMoment: 2025-06-03T15:22:07Z
                  cbChargeItems:
                  - Quantity: 3
                    Description: Beer 0.3l
                    Amount: 15
                    VATRate: 24
                    VATAmount: 2.9
                    ftChargeItemCase: 35184372088851
                    Position: 1
                  cbPayItems: []
                  cbArea: Table 12345
              SignRequestReceipt_Order_Order_Receipt_Pay_1_2:
                summary: |
                  2/4 order multiple times a round of beer, pay in cash next day
                description: |
                  order second round of beer long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101124
                  cbReceiptReference: order-23456
                  cbReceiptMoment: 2025-06-03T15:22:07Z
                  cbChargeItems:
                  - Quantity: 3
                    Description: Beer 0.3l
                    Amount: 15
                    VATRate: 24
                    VATAmount: 2.9
                    ftChargeItemCase: 35184372088851
                    Position: 1
                  cbPayItems: []
                  cbArea: Table 12345
              SignRequestReceipt_Order_Order_Receipt_Pay_1_3:
                summary: |
                  3/4 order multiple times a round of beer, pay in cash next day
                description: |
                  get receipt for all orders and do not pay long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-12345
                  cbPreviousReceiptReference:
                  - order-12345
                  - order-23456
                  cbReceiptMoment: 2025-06-03T15:22:07Z
                  cbChargeItems:
                  - Quantity: 6
                    Description: Beer 0.3l
                    Amount: 30
                    VATRate: 24
                    VATAmount: 5.8
                    ftChargeItemCase: 35184372088851
                    Position: 1
                  cbPayItems:
                  - Description: AccountsReceivable
                    Amount: 30
                    ftPayItemCase: 35184372088841
                    Position: 1
                  cbArea: Table 12345
              SignRequestReceipt_Order_Order_Receipt_Pay_1_4:
                summary: |
                  4/4 order multiple times a round of beer, pay in cash next day
                description: |
                  pay for receipt from previous day long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088834
                  cbReceiptReference: receipt-23456
                  cbPreviousReceiptReference:
                  - receipt-12345
                  cbReceiptMoment: 2025-06-03T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Accounts Receiveable
                    Amount: 30
                    VATRate: 0
                    ftChargeItemCase: 35184372088984
                    Position: 1
                  cbPayItems:
                  - Description: Cash
                    Amount: 30
                    ftPayItemCase: 35184372088833
                    Position: 1
              SignRequestReceipt_Sale_Refund_1:
                summary: |
                  1/4 sales of a T-Shirt with later partial refund
                description: |
                  sales t-shirt red + t-shirt green + jeans cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: T-Shirt Red XL
                    Amount: 35.8
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Quantity: 1
                    Description: T-Shirt Green S
                    Amount: 35.8
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Quantity: 1
                    Description: Jeans
                    Amount: 89.9
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  cbPayItems:
                  - Description: Card
                    Amount: 161.5
                    ftPayItemCase: 35184372088837
              SignRequestReceipt_Sale_Refund_2:
                summary: |
                  2/4 sales of a T-Shirt with later partial refund
                description: |
                  refund t-shirt red in cash long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-23456
                  cbPreviousReceiptReference: receipt-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: -1
                    Description: T-Shirt Red XL
                    Amount: -35.8
                    VATRate: 20
                    ftChargeItemCase: 35184372219923
                  cbPayItems:
                  - Description: Cash
                    Amount: -35.8
                    ftPayItemCase: 35184372219905
              SignRequestReceipt_Sale_Refund_3:
                summary: |
                  3/4 sales of a T-Shirt with later refund of complete receipt
                description: |
                  sales t-shirt green payment via card long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: receipt-34567
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: T-Shirt Green S
                    Amount: 35.8
                    VATRate: 20
                    ftChargeItemCase: 35184372219923
                  cbPayItems:
                  - Description: Card
                    Amount: 35.8
                    ftPayItemCase: 35184372088837
              SignRequestReceipt_Sale_Refund_4:
                summary: |
                  4/4 sales of a T-Shirt with later refund of complete receipt
                description: |
                  refund complete receipt refund t-shirt green refund card payment long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184388866049
                  cbReceiptReference: receipt-45678
                  cbPreviousReceiptReference: receipt-34567
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: -1
                    Description: T-Shirt Green S
                    Amount: -35.8
                    VATRate: 20
                    ftChargeItemCase: 35184372219923
                  cbPayItems:
                  - Description: Card
                    Amount: -35.8
                    ftPayItemCase: 35184372219909
              SignRequestReceipt_Sale_Refund_5:
                summary: |
                  5/4 sales of a T-Shirt with later refund of complete receipt without items given
                description: |
                  refund complete receipt refund t-shirt green refund card payment long description cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184388866049
                  cbReceiptReference: receipt-45678
                  cbPreviousReceiptReference: receipt-34567
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_manual_print:
                summary: |
                  manual printing on RT-Printer
                description: |
                  cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35197257003008
                  ftReceiptCaseData:
                    cbReceiptLines:
                    - line1
                    - line2
                  cbReceiptReference: receipt-56789
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 0
                    Description: manual text chargeitem 1
                    Amount: 0
                    VATRate: 0
                    ftChargeItemCase: 35184372088832
                  - Quantity: 0
                    Description: manual text chargeitem 2
                    Amount: 0
                    VATRate: 0
                    ftChargeItemCase: 35184372088832
                  - Quantity: 0
                    Description: manual text chargeitem 3
                    Amount: 0
                    VATRate: 0
                    ftChargeItemCase: 35184372088832
                  cbPayItems:
                  - Description: manual text payitem 1
                    Amount: 0
                    ftPayItemCase: 35184372088832
                  - Description: manual text payitem 2
                    Amount: 0
                    ftPayItemCase: 35184372088832
              SignRequestReceipt_rtprinter_dailyclosing:
                summary: |
                  daily closing
                description: |
                  cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372097041
                  cbReceiptReference: receipt-67890
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_rtprinter_xreport:
                summary: |
                  xreport
                description: |
                  cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35188667064320
                  cbReceiptReference: receipt-67890
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_rtprinter_copyreceipt:
                summary: |
                  copy receipt
                description: |
                  cbTerminalId comes from Header with line breaks
                value:
                  ftReceiptCase: 35184372101136
                  cbReceiptReference: receipt-89012
                  cbPreviousReceiptReference: receipt-12345
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems: []
                  cbPayItems: []
              SignRequestReceipt_SinglePurposeVoucher_1:
                summary: issuing / selling single purpose voucher
                description: |
                  example of issuing / selling a single purpose voucher cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 2
                    Description: Voucher for 2x Coffee
                    Amount: 7.2
                    VATRate: 20
                    ftChargeItemCase: 35184372088899
                    VATAmount: 1.2
                  cbPayItems:
                  - Description: Cash
                    Amount: 7.2
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_SinglePurposeVoucher_2:
                summary: redeeming single purpose voucher
                description: |
                  example of redemption of a single purpose voucher cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 2
                    Description: Coffee
                    Amount: 7.2
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 1.2
                  - Quantity: 1
                    Description: Voucher for 2x Coffee
                    Amount: -7.2
                    VATRate: 20
                    ftChargeItemCase: 35186519572547
                    VATAmount: -1.2
                  cbPayItems: []
              SignRequestReceipt_MultiPurposeVoucher_1:
                summary: issuing / selling multi purpose voucher
                description: |
                  example of issuing / selling a multi purpose voucher cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Gift Voucher - EUR 100
                    Amount: 100
                    VATRate: 0
                    ftChargeItemCase: 35184372088904
                    VATAmount: 0
                  cbPayItems:
                  - Description: Cash
                    Amount: 100
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_MultiPurposeVoucher_2:
                summary: redeeming multi purpose voucher
                description: |
                  example of redemption of a multi purpose voucher cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Sneakers
                    Amount: 100
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 16.6667
                  cbPayItems:
                  - Description: Gift Voucher - EUR 100
                    Amount: 100
                    ftPayItemCase: 35186519572486
              SignRequestReceipt_CashSaleReceipt_1:
                summary: simple ReceiptRequest example
                description: |
                  example of a simple receipt request cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  cbPayItems:
                  - Description: Cash
                    Amount: 8.2
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_CashSaleReceipt_2:
                summary: example sale incl. tip to owner
                description: |
                  example of a sale incl. a tip to the owner of the business (taxable tip) cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 0.7666
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 0.6
                  - Quantity: 1
                    Description: Company Tip
                    Amount: 0.8
                    VATRate: 20
                    ftChargeItemCase: 35184372088883
                    VATAmount: 0.1333
                  cbPayItems:
                  - Description: Cash
                    Amount: 9
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_CashSaleReceipt_3:
                summary: example sale incl. tip to employee
                description: |
                  example of a sale incl. a tip to the employee (not taxable) cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 0.7666
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                    VATAmount: 0.6
                  - Quantity: 1
                    Description: Tip
                    Amount: 0.8
                    VATRate: 0
                    ftChargeItemCase: 35184372088888
                    VATAmount: 0
                  cbPayItems:
                  - Description: Cash
                    Amount: 9
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_CashSaleReceipt_4:
                summary: sale with return change
                description: |
                  example of a sale for EUR 8.20, where the customer hands over EUR 10 and receives EUR 1.80 in change  cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  cbPayItems:
                  - Description: Cash
                    Amount: 10
                    ftPayItemCase: 35184372088833
                  - Description: Change return
                    Amount: -1.8
                    ftPayItemCase: 35184374185985
              SignRequestReceipt_CashSaleReceipt_5:
                summary: take away sale
                description: |
                  example of a take away sale (take away has special special VAT treatment in some countries) cbTerminalId comes from Header ftReceiptCase: API v2, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372088833
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Pizza Prosciutto e funghi
                    Amount: 14.9
                    VATRate: 7
                    ftChargeItemCase: 35184374186001
                  - Quantity: 1
                    Description: Cheesburger
                    Amount: 15.9
                    VATRate: 7
                    ftChargeItemCase: 35184374186001
                  cbPayItems:
                  - Description: Cash
                    Amount: 30.8
                    ftPayItemCase: 35184372088833
              SignRequestReceipt_CashSaleReceipt_6:
                summary: simple Training ReceiptRequest example
                description: |
                  example of a simple training receipt request cbTerminalId comes from Header ftReceiptCase: API v2, training flag, point-of-sale receipt type
                value:
                  ftReceiptCase: 35184372219905
                  cbReceiptReference: "1234"
                  cbReceiptMoment: 2023-11-24T15:22:07Z
                  cbChargeItems:
                  - Quantity: 1
                    Description: Beer 0.3l
                    Amount: 4.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  - Quantity: 1
                    Description: Coffee
                    Amount: 3.6
                    VATRate: 20
                    ftChargeItemCase: 35184372088851
                  cbPayItems:
                  - Description: Cash
                    Amount: 8.2
                    ftPayItemCase: 35184372088833
          application/yaml:
            schema:
              $ref: "#/components/schemas/ReceiptRequest"
            examples:
              RequestReceipt_DailyOperation_ZeroReceipt:
                $ref: "#/components/examples/SignRequestReceipt_DailyOperation_ZeroReceipt"
      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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: 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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
  /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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
  /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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-state"
      - name: x-terminal-id
        in: header
        description: |
          identifies the terminal  #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      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
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
    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
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: x-operation-id
        in: header
        required: true
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: X-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: 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":
          $ref: "#/components/responses/Unauthorized"
        "500":
          $ref: "#/components/responses/ServerError"
      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</br> <img src="https://receipts-sandbox.fiskaltrust.cloud/9330c645-e838-4b65-b77c-0ab6583d5e80/8fb08828-3f08-4622-8ba7-363552a5a5c0/link/qrcode">
      parameters:
      - name: QueueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        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":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"
  /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
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        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":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: 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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: QueueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-terminal-id
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        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
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: Timeout
        in: query
        required: false
        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
        schema:
          type: string
          format: uuid
          nullable: false
      - name: QueueItemId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          nullable: false
      - name: Timeout
        in: query
        required: false
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-state
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: x-possystem-id
        in: header
        description: |
          identifies the calling possystem #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-possystem-id"
      - name: x-journey-id
        in: header
        description: |
          identifies ongoing cart journey #TODO
        required: false
        schema:
          $ref: "#/components/schemas/x-journey-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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-lifetime"
      - name: x-operation-callback-finalized
        in: header
        required: false
        schema:
          $ref: "#/components/schemas/x-operation-callback-finalized"
      - name: x-operation-callback-state
        in: header
        required: 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
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: QueueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: StorageType
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/StorageTypeEnum"
      - name: Id
        in: path
        required: true
        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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      - name: QueueId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: StorageType
        in: path
        required: true
        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
        schema:
          $ref: "#/components/schemas/StorageTypeEnum"
      - name: Id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          description: |
            successfull
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_200_1"
        "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
        schema:
          $ref: "#/components/schemas/x-operation-id"
      - name: x-operation-lifetime
        in: header
        required: 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
        schema:
          $ref: "#/components/schemas/x-terminal-id"
      requestBody:
        $ref: "#/components/requestBodies/PairRequest"
      responses:
        "200":
          $ref: "#/components/responses/PairResponse"
        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.
    x-operation-callback-finalized:
      description: |
        single callback setting for current operation, executed once the operation is in final state, `done` or `failed`
    CartRequestState:
      required:
      - OperationId
      - State
      type: object
      description: |
        reflects as single state event of a cart request
      allOf:
      - $ref: "#/components/schemas/OperationState"
      - type: object
        properties:
          PayItemID:
            type: string
            format: uuid
            nullable: true
            default: null
    OperationState:
      required:
      - OperationId
      - State
      properties:
        OperationID:
          type: string
          description: |
            operationid
          format: uuid
          nullable: false
        QueueID:
          type: string
          format: uuid
          nullable: true
          default: null
        State:
          $ref: "#/components/schemas/OperationStateEnum"
        StateMessage:
          type: string
          nullable: true
          default: null
        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
    x-journey-id:
      description: journey identification
    OrderRequestState:
      required:
      - OperationId
      - State
      type: object
      description: |
        reflects as single state event of a order request
      allOf:
      - $ref: "#/components/schemas/OperationState"
      - type: object
        properties:
          PayItemID:
            type: string
            format: uuid
            nullable: true
            default: null
    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
          default: null
        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
          default: null
        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
          default: null
        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
        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
          default: null
        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
        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
        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
          default: null
        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
        AccountNumber:
          maxLength: 1023
          type: string
          description: |
            optional account number for bookkeeping export purpose
          nullable: true
          default: null
        CostCenter:
          maxLength: 1023
          type: string
          description: |
            optional cost center for cost accounting purpose
          nullable: true
          default: null
        ProductGroup:
          maxLength: 1023
          type: string
          description: |
            optional product group related to line item
          nullable: true
          default: null
        ProductNumber:
          maxLength: 1023
          type: string
          description: |
            optional product number related to line item
          nullable: true
          default: null
        ProductBarcode:
          maxLength: 1023
          type: string
          description: |
            optional product barcode related to line item
          nullable: true
          default: null
        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
          default: null
        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
          default: null
        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
        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
          default: null
        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
        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
          default: null
        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
        AccountNumber:
          maxLength: 1023
          type: string
          description: |
            optional account number for bookkeeping export purpose
          nullable: true
          default: null
        CostCenter:
          maxLength: 1023
          type: string
          description: |
            optional cost center for cost accounting purpose
          nullable: true
          default: null
        MoneyGroup:
          maxLength: 1023
          type: string
          description: |
            optional group related to line item
          nullable: true
          default: null
        MoneyNumber:
          maxLength: 1023
          type: string
          description: |
            optional number related to line item
          nullable: true
          default: null
        MoneyBarcode:
          maxLength: 1023
          type: string
          description: |
            optional barcode or serialnumber related to line item
          nullable: true
          default: null
        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
          default: null
        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
          default: null
        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.
    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
            default: null
    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
          default: null
        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
          default: null
        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
          default: null
        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
        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
          default: null
        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
        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
        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
          default: null
        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
        AccountNumber:
          maxLength: 1023
          type: string
          description: |
            optional account number for bookkeeping export purpose
          nullable: true
          default: null
        CostCenter:
          maxLength: 1023
          type: string
          description: |
            optional cost center for cost accounting purpose
          nullable: true
          default: null
        ProductGroup:
          maxLength: 1023
          type: string
          description: |
            optional product group related to line item
          nullable: true
          default: null
        ProductNumber:
          maxLength: 1023
          type: string
          description: |
            optional product number related to line item
          nullable: true
          default: null
        ProductBarcode:
          maxLength: 1023
          type: string
          description: |
            optional product barcode related to line item
          nullable: true
          default: null
        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
          default: null
        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
          default: null
        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
        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
          default: null
        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
        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
          default: null
        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
        AccountNumber:
          maxLength: 1023
          type: string
          description: |
            optional account number for bookkeeping export purpose
          nullable: true
          default: null
        CostCenter:
          maxLength: 1023
          type: string
          description: |
            optional cost center for cost accounting purpose
          nullable: true
          default: null
        MoneyGroup:
          maxLength: 1023
          type: string
          description: |
            optional group related to line item
          nullable: true
          default: null
        MoneyNumber:
          maxLength: 1023
          type: string
          description: |
            optional number related to line item
          nullable: true
          default: null
        MoneyBarcode:
          maxLength: 1023
          type: string
          description: |
            optional barcode or serialnumber related to line item
          nullable: true
          default: null
        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
          default: null
        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
          default: null
        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
            default: null
    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
            default: null
    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
    inline_response_200:
      type: object
      properties:
        ftJourneyID:
          type: string
          description: |
            identification of the journey
          format: uuid
          nullable: false
          default: 00000000-0000-0000-0000-000000000000
        DocumentURL:
          type: string
          description: |
            url is https://c.ft.ms/{base64url(JourneyId)}?s{signature-key-id}={base64url(signature(JourneyId))}
          format: uri
          nullable: false
      additionalProperties: true
    inline_response_201:
      type: object
      properties:
        ftJourneyID:
          type: string
          description: |
            identification of the journey
          format: uuid
          nullable: false
          default: 00000000-0000-0000-0000-000000000000
        DocumentURL:
          type: string
          format: uri
          nullable: false
      additionalProperties: true
    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: "#/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: "#/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_1:
      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"
    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:
            type: object
            properties:
              CashBoxID:
                type: string
                format: uuid
              AccessToken:
                type: string
                format: byte
  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
    SignRequestReceipt_Minimum1:
      summary: "most simple ReceiptRequest examplte, which uses unknown tagging as a fallback"
      description: |
        long description cbTerminalId comes from Header ftReceiptCase fallback to 0xCCCC_2000_0000_0000 ftChargeItemCase fallback to 0xCCCC_2000_0000_0000 ftPayItemCase fallback to 0xCCCC_20000_0000_0000 with line breaks
      value:
        cbReceiptReference: "1234"
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Beer 0.3l
          Amount: 4.6
          VATRate: 20
        - Quantity: 1
          Description: Coffee
          Amount: 3.6
          VATRate: 20
        cbPayItems:
        - Description: Cash
          Amount: 7.2
    SignRequestReceipt_Minimum2:
      summary: "ReceiptRequest examplte, downpayment of normal-vat and a coffe for take away"
      description: |
        long description cbTerminalId comes from Header
      value:
        ftReceiptCase: 35184372088833
        cbReceiptReference: "1234"
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Downpayment for Beer
          Amount: 10
          VATRate: 20
          ftChargeItemCase: 35184372613139
        - Quantity: 1
          Description: Coffee (TakeAway)
          Amount: 3.6
          VATRate: 20
          ftChargeItemCase: 35184374186003
        cbPayItems:
        - Description: Cash
          Amount: 23.6
    SignRequestReceipt_Minimum3:
      summary: "ReceiptRequest examplte, multiuse voucer handout"
      description: |
        long description cbTerminalId comes from Header
      value:
        ftReceiptCase: 35184372088833
        cbReceiptReference: "1234"
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Voucher
          Amount: 10
          VATRate: 20
          ftChargeItemCase: 35184372088904
        cbPayItems:
        - Description: Cash
          Amount: 10
    SignRequestReceipt_Minimum4:
      summary: "ReceiptRequest examplte, goods in returnable packaging, paid via voucher"
      description: |
        long description cbTerminalId comes from Header
      value:
        ftReceiptCase: 35184372088833
        cbReceiptReference: "1234"
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Milk (Bottled)
          Amount: 3.3
          VATRate: 10
          ftChargeItemCase: 35184372088849
        - Quantity: 1
          Description: Returnable Bottle
          Amount: 0.2
          VATRate: 10
          ftChargeItemCase: 35184373137425
        cbPayItems:
        - Description: Voucher
          Amount: 3.5
          ftPayItemCase: 35184372088838
    SignRequestReceipt_DailyOperation_ZeroReceipt:
      summary: ZeroReceipt
      description: |
        long description cbTerminalId comes from Header ftReceiptCase 0xCCCC_2000_0000_2000
      value:
        ftReceiptCase: 35184372097024
        cbReceiptReference: "1234"
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems: []
        cbPayItems: []
    SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_1:
      summary: |
        I go to a café, I order, and the waiter is required to bring the relevant fiscal document (retail receipt - ΑΛΠ) along with the order. Later, I call the waiter to pay (cash, card, or both). To properly "close" the receipt, it must be linked to these subsequent payments. Part 1 of 2, order a beer and a coffee
      description: |
        long description cbTerminalId comes from Header with line breaks
      value:
        ftReceiptCase: 35184372101124
        cbReceiptReference: order-12345
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Beer 0.3l
          Amount: 4.6
          VATRate: 20
          ftChargeItemCase: 35184372088867
        - Quantity: 1
          Description: Coffee
          Amount: 3.6
          VATRate: 20
          ftChargeItemCase: 35184372088867
        cbPayItems:
        - Description: Grant ... OnCredit
          Amount: 8.2
          ftPayItemCase: 35184372088846
    SignRequestReceipt_OpenTable_Order_Order_Pay_Receipt_CloseTable_1_2:
      summary: |
        I go to a café, I order, and the waiter is required to bring the relevant fiscal document (retail receipt - ΑΛΠ) along with the order. Later, I call the waiter to pay (cash, card, or both). To properly "close" the receipt, it must be linked to these subsequent payments. Part 2 of 2, pay in cash
      description: |
        long description cbTerminalId comes from Header with line breaks
      value:
        ftReceiptCase: 35184372088833
        cbReceiptReference: receipt-12345
        cbPreviousReceiptReference: order-12345
        cbReceiptMoment: 2023-11-24T15:22:07Z
        cbChargeItems:
        - Quantity: 1
          Description: Beer 0.3l
          Amount: 4.6
          VATRate: 20
          ftChargeItemCase: 35184372088867
        - Quantity: 1
          Description: Coffee
          Amount: 3.6
          VATRate: 20
          ftChargeItemCase: 35184372088867
        cbPayItems:
        - Description: Cash
          Amount: 8.2
          ftPayItemCase: 35184372088833
    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
            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
            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
