openapi: 3.1.0
info:
  version: '1'
  title: Adyen Terminal API
  description: 'The Adyen [Terminal API](https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/)
    lets you make payments, issue refunds, collect shopper information, and perform
    other shopper-terminal interactions using a payment terminal supplied by Adyen.


    ## Authentication and endpoints

    Authentication and endpoints depend on whether you are using a [cloud or a local](https://docs.adyen.com/point-of-sale/design-your-integration/choose-your-architecture/)
    Terminal API integration.


    ### Cloud

    Each request to the cloud Terminal API must be signed with an API key. [Generate
    your API Key](https://docs.adyen.com/development-resources/api-credentials#generate-api-key)
    in the Customer Area and set this key to the `X-API-Key` header value.


    The cloud Terminal API endpoint you need to use depends on whether your integration
    will receive transaction results synchronously or asynchronously:


    - Synchronous: `https://terminal-api-test.adyen.com/sync`

    - Asynchronous: `https://terminal-api-test.adyen.com/async`


    When you are ready to go live, you need to generate a new web service user credential
    and switch to one of the [live endpoints](https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/#cloud).


    ### Local

    If your integration uses local communications, API requests are made from a POS
    app directly to a terminal''s IP address. To learn how to set up and protect local
    communications, refer to [Building a local integration](https://docs.adyen.com/point-of-sale/design-your-integration/choose-your-architecture/local/).


    ## API structure

    Terminal API communicates with the terminal using JSON messages. All requests
    and responses have the following structure:

    - `MessageHeader`: identifies the type of transaction, the terminal being used,
    and unique transaction identifiers.

    - **Request body**: a request or response object, depending on the type of transaction.
    For example, when you make a payment request this is a `PaymentRequest` object,
    and when you receive a payment response this is a `PaymentResponse` object.


    ### Requests

    Each Terminal API request you make is contained in a `SaletoPOIRequest` object
    and needs to have the following objects:

    * `MessageHeader`: for each request you need to include this object and specify
    the [required parameters](https://docs.adyen.com/point-of-sale/design-your-integration/terminal-api/#request-message-header).

    * Request body: the name and structure of this object depends on the type of request.
    You can use this specification to create the structure of the request body. For
    example, to make a payment you need to include a `PaymentRequest` object and the
    `MessageHeader` inside the `SaletoPOIRequest` object.


    ### Responses

    Each terminal API response you receive is contained in a `SaleToPOIResponse` object
    and includes:

    * `MessageHeader`: this object echoes the values you provided in the request.
    The only exception is the `MessageType`, which is always **Response**.

    * **Response body**: the values you receive in the response body depend on the
    type of transaction request you made. For example, when making a `PaymentRequest`
    you would receive a `PaymentResponse` as the response body.


    Below, you can find the list of available Terminal API requests with the structure
    of the request/response body parameters:'
servers:
- description: with cloud integration
  url: https://terminal-api-test.adyen.com/sync
- description: with cloud integration
  url: https://terminal-api-test.adyen.com/async
- description: with local-hosting
  url: <local-terminal-IP-address>
paths:
  /login:
    post:
      description: 'It conveys information related to the session (period between
        a Login and the following Logout) to process.

        Content of the `LoginRequest` message.'
      summary: Login Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
          description: 'It conveys Information related to the Login to process.

            Content of the Login Response message.'
  /logout:
    post:
      description: 'Empty.

        Content of the Logout Request message.'
      summary: Logout Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogoutRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogoutResponse'
          description: 'It conveys the result of the Logout.

            Content of the Logout Response message.'
  /enableservice:
    post:
      description: 'It conveys the services that will be enabled for the POI Terminal
        without the request of the Sale System, and a possible invitation for the
        Customer to start the services.

        Content of the Enable Service Request message.'
      summary: EnableService Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableServiceRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnableServiceResponse'
          description: 'It conveys the result of the Enable Service processing.

            Content of the Enable Service Response message.'
  /admin:
    post:
      description: 'Empty.

        Content of the Custom Admin Request message.'
      summary: Admin Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminResponse'
          description: 'It conveys the result of the Custom Admin.

            Content of the Custom Admin Response message.'
  /payment:
    post:
      description: 'Request sent to terminal to initiate payment.

        It conveys Information related to the Payment transaction to process.

        Content of the `PaymentRequest` message.'
      summary: Payment Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
          description: 'It conveys Information related to the Payment transaction
            processed by the POI System.

            Content of the Payment Response message.'
  /cardacquisition:
    post:
      description: 'It conveys Information related to the payment and loyalty cards
        to read and analyse. This message pair is usually followed by a message pair
        (e.g. payment or loyalty) which refers to this Card Acquisition message pair.

        Content of the Card Acquisition Request message.'
      summary: CardAcquisition Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardAcquisitionRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardAcquisitionResponse'
          description: 'It conveys Information related to the payment and loyalty
            cards read and processed by the POI System and entered by the Customer.

            Content of the Card Acquisition Response message.'
  /loyalty:
    post:
      description: 'It conveys Information related to the Loyalty transaction to process.

        Content of the Loyalty Request message.'
      summary: Loyalty Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoyaltyRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoyaltyResponse'
          description: 'It conveys Information related to the Loyalty transaction
            processed by the POI System.

            Content of the Loyalty Response message.'
  /storedvalue:
    post:
      description: 'It conveys Information related to the Stored Value transaction
        to process.

        Content of the Stored Value Request message.'
      summary: StoredValue Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoredValueRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoredValueResponse'
          description: 'It conveys Information related to the Stored Value transaction
            processed by the POI System.

            Content of the Stored Value Response message.'
  /reversal:
    post:
      description: 'It conveys Information related to the reversal of a previous payment
        or a loyalty transaction.

        Content of the Reversal Request message.'
      summary: Reversal Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReversalRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReversalResponse'
          description: 'It conveys Information related to the reversal processed by
            the POI System.

            Content of the Reversal Response message.'
  /reconciliation:
    post:
      description: 'Content of the Reconciliation Request message.

        It conveys Information related to the Reconciliation requested by the Sale
        System.'
      summary: Reconciliation Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconciliationRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationResponse'
          description: 'It conveys Information related to the Reconciliation transaction
            processed by the POI System.

            Content of the Reconciliation Response message.'
  /gettotals:
    post:
      description: 'It conveys information from the Sale System related to the scope
        and the format of the totals to be computed by the POI System.

        Content of the Get Totals Request message.'
      summary: GetTotals Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTotalsRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTotalsResponse'
          description: 'Content of the Reconciliation Response message.

            It conveys Information related to the Reconciliation transaction processed
            by the POI System.'
  /balanceinquiry:
    post:
      description: 'It conveys Information related to the account for which a Balance
        Inquiry is requested.

        Content of the Balance Inquiry Request message.'
      summary: BalanceInquiry Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BalanceInquiryRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceInquiryResponse'
          description: 'Content of the Balance Inquiry Response message.

            It conveys the balance and the identification of the associated payment,
            loyalty or stored value account.'
  /transactionstatus:
    post:
      description: 'Content of the TransactionStatus Request message.

        It conveys Information requested for status of the last or current Payment,
        Loyalty or Reversal transaction.'
      summary: TransactionStatus Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionStatusRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatusResponse'
          description: 'Content of the TransactionStatus Response message.

            It conveys Information related to the status of the last or current Payment,
            Loyalty or Reversal transaction.'
  /abort:
    post:
      description: 'Body of the Abort Request message.

        It conveys Information requested for identification of the message request
        carrying the transaction to abort. A message to display on the CustomerError
        Device could be sent by the Sale System (DisplayOutput).'
      summary: Abort Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AbortRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AbortResponse'
          description: A successful `AbortRequest` returns a response with a **200
            OK** HTTP status code and no body.
  /diagnosis:
    post:
      description: 'It conveys Information related to the target POI for which the
        diagnosis is requested.

        Content of the Diagnosis Request message.'
      summary: Diagnosis Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiagnosisRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiagnosisResponse'
          description: 'It conveys the result of the requested diagnosis and a possible
            message to display on a logical device.

            Content of the Diagnosis Response message.'
  /display:
    post:
      description: 'It conveys the data to display and the way to process the display.
        It contains the complete content to display. It might contain an operation
        (the DisplayOutput element) per Display Device type.

        Content of the Display Request message.'
      summary: Display Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisplayRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisplayResponse'
          description: 'It conveys the result of the display, parallel to the message
            request, except if response not required and absent.

            Content of the Display Response message.'
  /input:
    post:
      description: Content of the `InputRequest` message. It conveys the data to display
        and how to process it. In addition to the display on the Input Device, it
        might contain an operation (the `DisplayOutput` element) per Display Device
        type.
      summary: Input Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InputRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InputResponse'
          description: 'It conveys the result of the input or the result of the outputs,
            parallel to the message request, except if response not required and absent.

            Content of the Input Response message.'
  /print:
    post:
      description: 'Content of the Print Request message.

        It conveys the complete data to print and how to process the print.'
      summary: Print Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrintRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrintResponse'
          description: 'It conveys the result of the print, parallel to the message
            request, except if response not required and absent.

            Content of the Print Response message.'
  /cardreaderapdu:
    post:
      description: 'It contains the APDU request to send to the chip of the card,
        and a possible invitation message to display on the CashierInterface or the
        CustomerInterface.

        Content of the Card Reader APDU Request message.'
      summary: CardReaderAPDU Request
      security:
      - BasicAuth: []
      - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardReaderAPDURequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardReaderAPDUResponse'
          description: 'Content of the Card Reader APDU Response message.

            It contains the result of the requested service, APDU response sent by
            the chip of the card in response to the APDU request.'
components:
  schemas:
    TerminalEnvironment:
      type: string
      description: 'Environment of the Terminal. Sent in the Login Request (Response)
        to identify the environment of the Sale System (POI System) during the session.
        Sent in other messages when the data has changed since the Login.

        Possible values:

        * **Attended**

        * **SemiAttended**

        * **Unattended**'
      enum:
      - Attended
      - SemiAttended
      - Unattended
    GenericProfile:
      type: string
      description: 'Functional profile of the Sale to POI protocol. Sent in the Login
        Request to identify the messages that might be requested or received by the
        Sale Terminal during the session. Sent in the Login Response to identify the
        messages that might be processed or sent by the POI Terminal during the session.

        Possible values:

        * **Basic**

        * **Extended**

        * **Standard**'
      enum:
      - Basic
      - Extended
      - Standard
    ServiceProfiles:
      type: array
      description: 'Service profiles of the Sale to POI protocol. Sent in the Login
        Request to identify the specific services that might be requested by the Sale
        Terminal during the session. Sent in the Login Response to identify the specific
        services that might be processed by the POI Terminal during the session.

        Possible values:

        * **Batch**

        * **CardReader**

        * **Communication**

        * **Loyalty**

        * **OneTimeRes**

        * **PIN**

        * **Reservation**

        * **Sound**

        * **StoredValue**

        * **Synchro**'
      items:
        type: string
        enum:
        - Batch
        - CardReader
        - Communication
        - Loyalty
        - OneTimeRes
        - PIN
        - Reservation
        - Sound
        - StoredValue
        - Synchro
    SaleCapabilities:
      type: array
      description: 'place holder!

        Possible values:

        * **CashierDisplay**

        * **CashierError**

        * **CashierInput**

        * **CashierStatus**

        * **CustomerAssistance**

        * **CustomerDisplay**

        * **CustomerError**

        * **CustomerInput**

        * **EMVContactless**

        * **ICC**

        * **MagStripe**

        * **POIReplication**

        * **PrinterDocument**

        * **PrinterReceipt**

        * **PrinterVoucher**'
      items:
        type: string
        enum:
        - CashierDisplay
        - CashierError
        - CashierInput
        - CashierStatus
        - CustomerAssistance
        - CustomerDisplay
        - CustomerError
        - CustomerInput
        - EMVContactless
        - ICC
        - MagStripe
        - POIReplication
        - PrinterDocument
        - PrinterReceipt
        - PrinterVoucher
    TokenRequestedType:
      type: string
      description: 'Type of token replacing the PAN of a payment card to identify
        the payment mean of the customer. It allows, for a merchant, to use a token
        for a transaction only or for a longer period.

        Possible values:

        * **Customer**

        * **Transaction**'
      enum:
      - Customer
      - Transaction
    CustomerOrderReq:
      type: array
      description: 'List of customer order open, closed or both to be sent in the
        response messages.

        Possible values:

        * **Both**

        * **Closed**

        * **Open**'
      items:
        type: string
        enum:
        - Both
        - Closed
        - Open
    TrackFormat:
      type: string
      description: 'Magnetic track or magnetic ink characters line.

        Possible values:

        * **AAMVA**

        * **ISO**'
      enum:
      - AAMVA
      - ISO
    EntryMode:
      type: array
      items:
        type: string
        enum:
        - Contactless
        - File
        - ICC
        - Keyed
        - MagStripe
        - Manual
        - Mobile
        - RFID
        - Scanned
        - SynchronousICC
        - Tapped
    Result:
      type: string
      enum:
      - Failure
      - Partial
      - Success
    ErrorCondition:
      type: string
      enum:
      - Aborted
      - Busy
      - Cancel
      - DeviceOut
      - InProgress
      - InsertedCard
      - InvalidCard
      - LoggedOut
      - MessageFormat
      - NotAllowed
      - NotFound
      - PaymentRestriction
      - Refusal
      - UnavailableDevice
      - UnavailableService
      - UnreachableHost
      - WrongPIN
    GlobalStatus:
      type: string
      enum:
      - Busy
      - Maintenance
      - OK
      - Unreachable
    PrinterStatus:
      type: string
      description: 'Indicates if the printer is working and usable.

        Possible values:

        * **NoPaper**

        * **OK**

        * **OutOfOrder**

        * **PaperJam**

        * **PaperLow**'
      enum:
      - NoPaper
      - OK
      - OutOfOrder
      - PaperJam
      - PaperLow
    POICapabilities:
      type: array
      description: 'Hardware capabilities of the POI Terminal. They are the POI capabilities
        the POI System allows the Sale System to use. These POI capabilities include
        the logical devices enumerated in the devices data element (most of these
        devices could be on the POI part), plus card reader devices. Sent in the Login
        Response to identify the devices of the POI Terminal which can be used by
        the Sale System during the session.

        Possible values:

        * **CashHandling**

        * **CashierDisplay**

        * **CashierError**

        * **CashierInput**

        * **CustomerDisplay**

        * **CustomerError**

        * **CustomerInput**

        * **EMVContactless**

        * **ICC**

        * **MagStripe**

        * **PrinterDocument**

        * **PrinterReceipt**

        * **PrinterVoucher**'
      items:
        type: string
        enum:
        - CashHandling
        - CashierDisplay
        - CashierError
        - CashierInput
        - CustomerDisplay
        - CustomerError
        - CustomerInput
        - EMVContactless
        - ICC
        - MagStripe
        - PrinterDocument
        - PrinterReceipt
        - PrinterVoucher
    Device:
      type: string
      enum:
      - CashierDisplay
      - CashierInput
      - CustomerDisplay
      - CustomerInput
    InfoQualify:
      type: string
      enum:
      - CustomerAssistance
      - Display
      - Document
      - Error
      - Input
      - POIReplication
      - Receipt
      - Sound
      - Status
      - Voucher
    OutputFormat:
      type: string
      description: 'Format of the content to display or print. Display or print device
        function.

        Possible values:

        * **BarCode**

        * **MessageRef**

        * **Text**

        * **XHTML**'
      enum:
      - BarCode
      - MessageRef
      - Text
      - XHTML
    Color:
      type: string
      enum:
      - Black
      - Blue
      - Cyan
      - Green
      - Magenta
      - Red
      - White
      - Yellow
    CharacterWidth:
      type: string
      enum:
      - DoubleWidth
      - SingleWidth
    CharacterHeight:
      type: string
      enum:
      - DoubleHeight
      - HalfHeight
      - SingleHeight
    CharacterStyle:
      type: string
      enum:
      - Bold
      - Italic
      - Normal
      - Underline
    Alignment:
      type: string
      enum:
      - Centred
      - Justified
      - Left
      - Right
    BarcodeType:
      type: string
      description: 'Type of Barcode coding. Qualification of the barcode value to
        display or print.

        Possible values:

        * **Code128**

        * **Code25**

        * **EAN13**

        * **EAN8**

        * **PDF417**

        * **QRCode**

        * **UPCA**'
      enum:
      - Code128
      - Code25
      - EAN13
      - EAN8
      - PDF417
      - QRCode
      - UPCA
    MenuEntryTag:
      type: string
      description: 'Characteristics related to the selection of a menu entry.

        Possible values:

        * **NonSelectable**

        * **NonSelectableSubMenu**

        * **Selectable**

        * **SubMenu**'
      enum:
      - NonSelectable
      - NonSelectableSubMenu
      - Selectable
      - SubMenu
    TransactionAction:
      type: string
      description: "Action to realise on a transaction. In an `EnableService` request\
        \ message:\n  - Starts a transaction by a swipe-ahead mechanism, with the\
        \ services which are enabled.\n  - Aborts a swipe-ahead transaction or started\
        \ by a `CardAcquisition`, and not followed by a service request from the Sale\
        \ System to complete the transaction.\nPossible values:\n* **AbortTransaction**\n\
        * **StartTransaction**"
      enum:
      - AbortTransaction
      - StartTransaction
    ServicesEnabled:
      type: array
      description: 'Services which are enabled before the start-up of a transaction.

        Mandatory if `TransactionAction` is `StartTransaction`, absent if not.

        Possible values:

        * **CardAcquisition**

        * **Loyalty**

        * **Payment**'
      items:
        type: string
        enum:
        - CardAcquisition
        - Loyalty
        - Payment
    UnitOfMeasure:
      type: string
      enum:
      - Case
      - Centilitre
      - Centimetre
      - Foot
      - Gram
      - Inch
      - Kilogram
      - Kilometre
      - Litre
      - Meter
      - Mile
      - Other
      - Ounce
      - Pint
      - Pound
      - Quart
      - UKGallon
      - USGallon
      - Yard
    PaymentType:
      type: string
      enum:
      - CashAdvance
      - CashDeposit
      - Completion
      - FirstReservation
      - Instalment
      - IssuerInstalment
      - Normal
      - OneTimeReservation
      - PaidOut
      - Recurring
      - Refund
      - UpdateReservation
    PaymentInstrumentType:
      type: string
      enum:
      - Card
      - Cash
      - Check
      - Mobile
      - StoredValue
    TypeCode:
      type: string
      enum:
      - Company
      - Personal
    StoredValueAccountType:
      type: string
      enum:
      - GiftCard
      - Other
      - PhoneCard
    IdentificationType:
      type: string
      enum:
      - AccountNumber
      - BarCode
      - ISOTrack2
      - PAN
      - PhoneNumber
    LoyaltyUnit:
      type: string
      enum:
      - Monetary
      - Point
    IdentificationSupport:
      type: string
      description: 'Support of the loyalty account identification. Allows knowing
        where and how you have found the loyalty account identification.

        Possible values:

        * **HybridCard**

        * **LinkedCard**

        * **LoyaltyCard**

        * **NoCard**'
      enum:
      - HybridCard
      - LinkedCard
      - LoyaltyCard
      - NoCard
    InstalmentType:
      type: string
      description: 'Type of instalment transaction. For requesting an instalment payment
        transaction.

        Possible values:

        * **DeferredInstalments**

        * **EqualInstalments**

        * **InequalInstalments**'
      enum:
      - DeferredInstalments
      - EqualInstalments
      - InequalInstalments
    PeriodUnit:
      type: string
      description: 'Type of instalment transaction.

        Possible values:

        * **Annual**

        * **Daily**

        * **Monthly**

        * **Weekly**'
      enum:
      - Annual
      - Daily
      - Monthly
      - Weekly
    LoyaltyHandling:
      type: string
      enum:
      - Allowed
      - Forbidden
      - Processed
      - Proposed
      - Required
    ForceEntryMode:
      type: array
      items:
        type: string
        enum:
        - CheckReader
        - Contactless
        - File
        - ICC
        - Keyed
        - MagStripe
        - Manual
        - RFID
        - Scanned
        - SynchronousICC
        - Tapped
    DocumentQualifier:
      type: string
      enum:
      - CashierReceipt
      - CustomerReceipt
      - Document
      - Journal
      - SaleReceipt
      - Voucher
    AuthenticationMethod:
      type: array
      description: 'Method for customer authentication. Allows the Sale System informed
        about customer authentication for the payment transaction.

        Possible values:

        * **Bypass**

        * **ManualVerification**

        * **MerchantAuthentication**

        * **OfflinePIN**

        * **OnlinePIN**

        * **PaperSignature**

        * **SecureCertificate**

        * **SecureNoCertificate**

        * **SecuredChannel**

        * **SignatureCapture**

        * **UnknownMethod**'
      items:
        type: string
        enum:
        - Bypass
        - ManualVerification
        - MerchantAuthentication
        - OfflinePIN
        - OnlinePIN
        - PaperSignature
        - SecureCertificate
        - SecureNoCertificate
        - SecuredChannel
        - SignatureCapture
        - UnknownMethod
    LoyaltyTransactionType:
      type: string
      description: "Type of loyalty transaction. These types of loyalty transactions\
        \ use the same message requests:\n  * **Award**: direct or payment-related\
        \ award on a loyalty account.\n  * **Rebate**: rebate on a total amount, sale\
        \ item amount, or sale items.\n  * **Redemption**: redemption on a loyalty\
        \ account.\n  * **AwardRefund**: refund of a loyalty award transaction.\n\
        \  * **RebateRefund**: refund of a loyalty rebate transaction.\n  * **RedemptionRefund**:\
        \ refund of a loyalty redemption transaction.\nPossible values:\n* **Award**\n\
        * **AwardRefund**\n* **Rebate**\n* **RebateRefund**\n* **Redemption**\n* **RedemptionRefund**"
      enum:
      - Award
      - AwardRefund
      - Rebate
      - RebateRefund
      - Redemption
      - RedemptionRefund
    StoredValueTransactionType:
      type: string
      enum:
      - Activate
      - Duplicate
      - Load
      - Reserve
      - Reverse
      - Unload
    ReversalReason:
      type: string
      description: 'Reason of the payment or loyalty reversal..

        Possible values:

        * **CustCancel**

        * **Malfunction**

        * **MerchantCancel**

        * **Unable2Compl**'
      enum:
      - CustCancel
      - Malfunction
      - MerchantCancel
      - Unable2Compl
    ReconciliationType:
      type: string
      enum:
      - AcquirerReconciliation
      - AcquirerSynchronisation
      - PreviousReconciliation
      - SaleReconciliation
    TransactionType:
      type: string
      enum:
      - Award
      - CashAdvance
      - CompletedDeffered
      - CompletedReservation
      - Credit
      - Debit
      - Declined
      - Failed
      - FirstReservation
      - IssuerInstalment
      - OneTimeReservation
      - Rebate
      - Redemption
      - ReverseAward
      - ReverseCredit
      - ReverseDebit
      - ReverseRebate
      - ReverseRedemption
      - UpdateReservation
    TotalDetails:
      type: array
      description: 'Indicates the hierarchical structure of the reconciliation result
        of the Sale to POI reconciliation.

        Required to present totals per value of element included in this cluster (POI
        Terminal, Sale Terminal, Cashier, Shift, TotalsGroupID).

        Possible values:

        * **OperatorID**

        * **POIID**

        * **SaleID**

        * **ShiftNumber**

        * **TotalsGroupID**'
      items:
        type: string
        enum:
        - OperatorID
        - POIID
        - SaleID
        - ShiftNumber
        - TotalsGroupID
    AccountType:
      type: string
      description: 'Type of cardholder account used for the transaction. Allows a
        cardholder to select the type of account used for the transaction.

        Possible values:

        * **CardTotals**

        * **Checking**

        * **CreditCard**

        * **Default**

        * **EpurseCard**

        * **Investment**

        * **Savings**

        * **Universal**'
      enum:
      - CardTotals
      - Checking
      - CreditCard
      - Default
      - EpurseCard
      - Investment
      - Savings
      - Universal
    MessageCategory:
      type: string
      enum:
      - Abort
      - Admin
      - BalanceInquiry
      - CardAcquisition
      - CardReaderAPDU
      - Diagnosis
      - Display
      - EnableService
      - Event
      - GetTotals
      - Input
      - InputUpdate
      - Login
      - Logout
      - Loyalty
      - None
      - Payment
      - Print
      - Reconciliation
      - Reversal
      - StoredValue
      - TransactionStatus
    MessageType:
      type: string
      enum:
      - Notification
      - Request
      - Response
    MessageClass:
      type: string
      enum:
      - Device
      - Event
      - Service
    EventToNotify:
      type: string
      description: 'Event the POI notifies to the Sale System.

        Possible values:

        * **Abort**

        * **BeginMaintenance**

        * **CardInserted**

        * **CardRemoved**

        * **Completed**

        * **CustomerLanguage**

        * **EndMaintenance**

        * **Initialised**

        * **KeyPressed**

        * **OutOfOrder**

        * **Reject**

        * **SaleAdmin**

        * **SaleWakeUp**

        * **SecurityAlarm**

        * **Shutdown**

        * **StopAssistance**

        * **UseAnotherCardForPreauth**'
      enum:
      - Abort
      - BeginMaintenance
      - CardInserted
      - CardRemoved
      - Completed
      - CustomerLanguage
      - EndMaintenance
      - Initialised
      - KeyPressed
      - OutOfOrder
      - Reject
      - SaleAdmin
      - SaleWakeUp
      - SecurityAlarm
      - Shutdown
      - StopAssistance
      - UseAnotherCardForPreauth
    InputCommand:
      type: string
      enum:
      - DecimalString
      - DigitString
      - GetAnyKey
      - GetConfirmation
      - GetFunctionKey
      - GetMenuEntry
      - Password
      - SiteManager
      - TextString
    ResponseMode:
      type: string
      enum:
      - Immediate
      - NotRequired
      - PrintEnd
      - SoundEnd
    SoundFormat:
      type: string
      enum:
      - MessageRef
      - SoundRef
      - Text
    SoundAction:
      type: string
      enum:
      - SetDefaultVolume
      - StartSound
      - StopSound
    PINFormat:
      type: string
      enum:
      - ISO0
      - ISO1
      - ISO2
      - ISO3
    PINRequestType:
      type: string
      description: 'Type of PIN Service.

        Possible values:

        * **PINEnter**

        * **PINVerify**

        * **PINVerifyOnly**'
      enum:
      - PINEnter
      - PINVerify
      - PINVerifyOnly
    SaleToIssuerData:
      type: object
      description: 'Sale information intended for the Issuer.

        The POI System receives this information and sends it to the Acquirer for
        the Issuer without any change.'
      properties:
        StatementReference:
          type: string
          pattern: ^.+$
          description: Label to print on the bank statement.
    TrackData:
      type: object
      description: 'Magnetic track or magnetic ink characters line.

        ISO 7813 - ISO 4909.

        Generic data structure for a card track, used when the magstripe card reader
        is located on the Sale Terminal, or for magstripe Card Reader device request.
        The data structure is also used to store the line at the bottom of a bank
        check.'
      properties:
        TrackNumb:
          type: integer
          minimum: 1
          maximum: 3
          default: 2
          description: Card track number.
        TrackFormat:
          $ref: '#/components/schemas/TrackFormat'
          description: 'Card track format.

            Possible values:

            * **AAMVA**

            * **ISO**'
        TrackValue:
          type: string
          pattern: ^.{1,104}$
          description: Card track content.
      required:
      - TrackValue
    SensitiveCardData:
      type: object
      description: 'This data structure could be CMS protected (EnvelopedData). In
        this case the data structure SensitiveCardData is replaced by the data structure
        ProtectedCardData of type ContentInformationType.

        When this data is protected, the exact content is unknown by the Sale System,
        and might include

        all the information which are required by an external backup POI Server to
        make a batch payment

        transaction in case of problem with the POI System.

        Sensitive information related to the payment card, entered or read

        by the Sale System.'
      properties:
        PAN:
          type: integer
          minimum: 8
          maximum: 28
          description: Primary Account Number.
        CardSeqNumb:
          type: integer
          minimum: 2
          maximum: 3
          description: 'Card Sequence Number.

            If EntryMode is File, Keyed, or Manual.'
        ExpiryDate:
          type: integer
          minimum: 4
          maximum: 4
          description: 'Date after which the card cannot be used.

            If EntryMode is File.'
        TrackData:
          type: array
          items:
            $ref: '#/components/schemas/TrackData'
          description: 'Magnetic track or magnetic ink characters line.

            If EntryMode is MagStripe or RFID .'
    PaymentToken:
      type: object
      description: "Surrogate of the PAN (Primary Account Number) of the payment card\
        \ to\n identify the payment mean of the customer. It allows, for a merchant,\
        \ to identify\n the customer."
      properties:
        TokenRequestedType:
          $ref: '#/components/schemas/TokenRequestedType'
          description: "Type of token replacing the PAN of a payment card to identify\
            \ the payment\n mean of the customer. It allows, for a merchant, to use\
            \ a token for a transaction\n only or for a longer period.\nPossible values:\n\
            * **Customer**\n* **Transaction**"
        TokenValue:
          type: string
          pattern: ^.+$
          description: "Payment token replacing the PAN of the payment card to identify\
            \ the payment\n mean of the customer."
        ExpiryDateTime:
          type: string
          format: date-time
          description: Expiry date and time. Limits the validity of a payment token.
      required:
      - TokenRequestedType
      - TokenValue
    CustomerOrder:
      type: object
      description: 'Customer order attached to a customer, recorded in the POI system.

        Allows the management of customer orders by the POI, for instance in a

        multi-channel or a click and collect sale transaction.'
      properties:
        CustomerOrderID:
          type: string
          pattern: ^.+$
          description: Additional and optional identification of a customer order.
        SaleReferenceID:
          type: string
          pattern: ^.+$
          description: Identification of a Sale global transaction for a sequence
            of related POI transactions. Identification of a reservation transaction
            for the sequence of reservation and the completion.
        OpenOrderState:
          type: boolean
          default: true
          description: 'Specifies if a customer order is currently Open. An open customer
            order

            is an order waiting for further operations.'
        StartDate:
          type: string
          format: date-time
          description: Date time of the beginning of an operation.
        EndDate:
          type: string
          format: date-time
          description: Date time of the end of an operation.
        ForecastedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: "Depending on the choice of the sale system it could equal\
            \ the initial amount\n of the order or the global amount of the order.\
            \ If ForecastedAmount equals\n the initial amount of the order it will\
            \ allow the system to follow any additional\n payment. In case of equality\
            \ with the global amount of the order, the system\nwill then be able to\
            \ follow remaining amounts."
        CurrentAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Total amount of all completed transactions of a customer order.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        AccessedBy:
          type: string
          pattern: ^.+$
          description: 'Identification of an entity accessing data to perform an operation.
            Allow

            the synchronisation of customer order processing, when several parts of
            the Sale System

            access a customer order at the same time. The Sale entity active on the
            customer order is identified

            by this data.'
        AdditionalInformation:
          type: string
          pattern: ^.+$
          description: Unqualified information.
      required:
      - SaleReferenceID
      - StartDate
      - ForecastedAmount
      - CurrentAmount
    AllowedProduct:
      type: object
      description: 'Product that is payable by the payment card.

        Product codes that are payable by the payment card.'
      properties:
        ProductCode:
          type: integer
          minimum: 1
          maximum: 20
          description: Product code of item purchased with the transaction.
        EanUpc:
          type: integer
          description: Standard product code of item purchased with the transaction.
        ProductLabel:
          type: string
          pattern: ^.+$
          description: Product name of an item purchased with the transaction.
        AdditionalProductInfo:
          type: string
          pattern: ^.+$
          description: Additionl information related to the line item.
      required:
      - ProductCode
    CardData:
      type: object
      description: 'Information related to the payment card used for the transaction.

        Allows acquisition of the card data by the Sale System before the Payment,
        CardAcquisition, or BalanceInquiry request to the POI. It can also be sent
        in the CardAcquisition response, to be processed by the Sale System.'
      properties:
        PaymentBrand:
          type: string
          pattern: ^.+$
          description: 'Type of payment card.

            If card PAN is readable.

            Indicates the card used to pay in the PaymentResponse. Sent in the CardAcquisitionResponse,
            to leave the Cashier to choose between several applications in a smartcard,
            or several brand in a co-branded card. In this case, the CardAcquisitionRequest.ForceCustomerSelectionFlag
            must contain the value False. Brands are part of the POI and Sale Systems
            configurations.'
        MaskedPan:
          type: string
          pattern: ^.+$
          description: 'Masked Primary Account Number

            Part of the PAN is replaced by a string of * characters, to identify a
            customer account or relationship. Presence of this data element, which
            replace the PAN when SensitiveCardData is protected and replaced by ProtectedCardData.
            Alternatively the MaskedPAN can be used as a token to identify a customer.'
        PaymentAccountRef:
          type: string
          pattern: ^.+$
          description: Reference of the PAN, which identifies the PAN or the card
            uniquely, named also PAR (Payment Account Reference). This reference may
            be defined by the card issuer or by a token service provider under the
            control of the card issuer, and cannot be used for a payment transaction.
        EntryMode:
          $ref: '#/components/schemas/EntryMode'
          description: 'Entry mode of the payment instrument information. In the Payment,
            Loyalty or StoredValue Request messages, it informs the POI System the
            entry mode of the payment instrument information when read by the Sale
            Terminal. In the Payment, Loyalty or StoredValue Response messages, it
            informs the Sale System the entry mode of the payment instrument.

            Possible values:

            * **Contactless**

            * **File**

            * **ICC**

            * **Keyed**

            * **MagStripe**

            * **Manual**

            * **Mobile**

            * **RFID**

            * **Scanned**

            * **SynchronousICC**

            * **Tapped**'
        CardCountryCode:
          type: integer
          minimum: 3
          maximum: 3
          description: 'Country Code attached to the card (3 numerics).

            If available in the card.'
        ProtectedCardData:
          type: string
          description: 'Sensitive information related to the payment card, protected
            by CMS.

            SensitiveCardData protected by CMS EnvelopedData.'
        SensitiveCardData:
          $ref: '#/components/schemas/SensitiveCardData'
          description: 'Sensitive information related to the payment card, entered
            or read by the Sale System.

            If structure non empty and unprotected.'
        AllowedProductCode:
          type: array
          items:
            type: integer
            minimum: 1
            maximum: 20
            description: 'Product codes that are payable by the payment card.

              If not all the products are accepted for the payment card proposed by
              the Customer. In this case, Result is failure, ErrorCondition is Payment
              Restriction.

              For One Time Reservation, the POI can send product codes payable by
              the payment, even if the POI did not send SaleItem in the request. If
              at least one product sent

              in the request is accepted, the Result is Success.

              Product codes that are payable by the payment card. If all the products
              are not accepted for the payment card proposed by the Customer. In this
              case, Result is failure and ErrorCondition is Payment Restriction. For
              One Time Reservation, the POI can send product codes payable by the
              payment, even if the POI did not send SaleItem in the request. If at
              least one product sent in the request is accepted, the Result is Success.'
          description: 'Product codes that are payable by the payment card.

            If not all the products are accepted for the payment card proposed by
            the Customer. In this case, Result is failure, ErrorCondition is Payment
            Restriction.

            For One Time Reservation, the POI can send product codes payable by the
            payment, even if the POI did not send SaleItem in the request. If at least
            one product sent

            in the request is accepted, the Result is Success.

            Product codes that are payable by the payment card. If all the products
            are not accepted for the payment card proposed by the Customer. In this
            case, Result is failure and ErrorCondition is Payment Restriction. For
            One Time Reservation, the POI can send product codes payable by the payment,
            even if the POI did not send SaleItem in the request. If at least one
            product sent in the request is accepted, the Result is Success.'
        AllowedProduct:
          type: array
          items:
            $ref: '#/components/schemas/AllowedProduct'
          description: Product that is payable by the payment card.
        PaymentToken:
          $ref: '#/components/schemas/PaymentToken'
          description: 'Surrogate of the PAN (Primary Account Number) of the payment
            card to identify the payment mean of the customer. It allows, for a merchant,
            to identify the customer.

            Restriction of product payable by a card.'
        CustomerOrder:
          type: array
          items:
            $ref: '#/components/schemas/CustomerOrder'
          description: Customer order attached to a customer, recorded in the POI
            system. Allows the management of customer orders by the POI, for instance
            in a multi-channel or a click and collect sale transaction.
    TransactionIDType:
      type: object
      description: Identification of a transaction for the Sale System or the POI
        System.
      properties:
        TransactionID:
          type: string
          pattern: ^.+$
          description: 'Unique identification of a transaction to identify the transaction
            on

            the Sale System (e.g. ticket number), or the POI System.'
        TimeStamp:
          type: string
          format: date-time
          description: "Date and time of a transaction for the Sale System, the POI\
            \ System or the Acquirer.\n Ensures the uniqueness of a transaction and\
            \ indicates the time when the event\n occurs in the EventNotification\
            \ message."
      required:
      - TransactionID
      - TimeStamp
    SaleTerminalData:
      type: object
      description: 'Information related to the software and hardware features of the
        Sale Terminal.

        Sent in the Login Request if a Sale Terminal is involved in the login. In
        other messages, sent when a logical device is out of order (SaleCapabilities)
        or when other data have changed or were missing in the Login.'
      properties:
        TotalsGroupID:
          type: string
          pattern: ^.{1,16}$
          description: 'Identification of a group of transactions on a POI Terminal,
            having the same Sale features.

            Could be used to group POI for reconciliation or other purpose defined
            by the Sale System. The default value is assigned by the Login Request.'
    SaleData:
      type: object
      description: Data associated with the Sale System, with a particular value during
        the processing of the payment by the POI, including the cards acquisition.
      properties:
        OperatorID:
          type: string
          pattern: ^.+$
          description: Identification of the Cashier or Operator.
        OperatorLanguage:
          type: string
          pattern: ^[a-z]{2,2}$
          description: 'Language of the Cashier or Operator.

            If different from the Login.'
        ShiftNumber:
          type: string
          pattern: ^.+$
          description: 'Shift number.

            If different from the Login, see Login SaleData.'
        SaleTransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: Identification of a Sale transaction.
        SaleReferenceID:
          type: string
          pattern: ^.+$
          description: 'Identification of a Sale global transaction for a sequence
            of related POI transactions.

            If payment reservation.'
        SaleTerminalData:
          $ref: '#/components/schemas/SaleTerminalData'
          description: 'Information related to the software and hardware features
            of the Sale Terminal.

            If content is not empty.'
        TokenRequestedType:
          $ref: '#/components/schemas/TokenRequestedType'
          description: "Type of token replacing the PAN of a payment card to identify\
            \ the payment\n mean of the customer. It allows, for a merchant, to use\
            \ a token for a transaction\n only or for a longer period.\nPossible values:\n\
            * **Customer**\n* **Transaction**"
        CustomerOrderID:
          type: string
          pattern: ^.+$
          description: Additional and optional identification of a customer order.
        CustomerOrderReq:
          $ref: '#/components/schemas/CustomerOrderReq'
          description: 'List of customer order open, closed or both to be sent in
            the response messages.

            Possible values:

            * **Both**

            * **Closed**

            * **Open**'
        SaleToPOIData:
          type: string
          pattern: ^.+$
          description: 'Sale information intended for the POI.

            Stored with the transaction.'
        SaleToAcquirerData:
          type: string
          pattern: ^.+$
          description: 'Sale information intended for the Acquirer.

            Send to the Acquirer if present.'
        SaleToIssuerData:
          $ref: '#/components/schemas/SaleToIssuerData'
          description: 'Sale information intended for the Issuer.

            Send to the Acquirer if present.'
      required:
      - SaleTransactionID
    POIData:
      type: object
      description: 'Data related to the POI System.

        In the Message Response, identification of the POI transaction.'
      properties:
        POITransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: Unique identification of a POI transaction for a POI.
        POIReconciliationID:
          type: integer
          description: 'Identification of the reconciliation period between Sale and
            POI.

            If Result is Success.'
      required:
      - POITransactionID
    SaleSoftware:
      type: object
      description: Information related to the software of the Sale System which manages
        the NEXO Sale to POI protocol.
      properties:
        ManufacturerID:
          type: string
          pattern: ^.+$
          description: Identification of the Manufacturer.
        ApplicationName:
          type: string
          pattern: ^.+$
          description: Name of the software product.
        SoftwareVersion:
          type: string
          pattern: ^.+$
          description: Version of the software product.
        CertificationCode:
          type: string
          pattern: ^.+$
          description: Certification code of the software which manages the Sale to
            POI protocol.
      required:
      - ManufacturerID
      - ApplicationName
      - SoftwareVersion
      - CertificationCode
    CoinsOrBills:
      type: object
      description: 'Indicates the remaining number of coins or bills of a given value
        in a cash handling device. When the cash handling machine does not have any
        more coins or bills of a certain value, the number must be equal to 0.

        Number of coins or bills of a given value.'
      properties:
        UnitValue:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Value of a coin or bill.
        Number:
          type: integer
          description: Number of coins or bills of a certain value.
      required:
      - UnitValue
      - Number
    CashHandlingDevice:
      type: object
      description: 'Indicate the status and the remaining coins and bill in a cash
        handling device.

        Status of cash handling device.'
      properties:
        CashHandlingOKFlag:
          type: boolean
          description: Indicates if the cash handling device is working and usable.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        CoinsOrBills:
          type: array
          items:
            $ref: '#/components/schemas/CoinsOrBills'
          description: Number of coins or bills of a given value.
      required:
      - CashHandlingOKFlag
      - Currency
      - CoinsOrBills
    POIStatus:
      type: object
      description: 'Indicate the availability of the POI Terminal components. The
        data element is absent if the component is not part of the POI Terminal.

        State of a POI Terminal.'
      properties:
        GlobalStatus:
          $ref: '#/components/schemas/GlobalStatus'
          description: 'Global status of a POI Server or POI Terminal.

            Possible values:

            * **Busy**

            * **Maintenance**

            * **OK**

            * **Unreachable**'
        SecurityOKFlag:
          type: boolean
          description: 'Indicates if the security module of the POI is working and
            usable.

            If security module present.'
        PEDOKFlag:
          type: boolean
          description: 'Indicates if the PED is working and usable.

            If PED present.'
        CardReaderOKFlag:
          type: boolean
          description: 'Indicates if the card readers are working and usable.

            If card reader device present.'
        PrinterStatus:
          $ref: '#/components/schemas/PrinterStatus'
          description: 'Possible values:

            * **NoPaper**

            * **OK**

            * **OutOfOrder**

            * **PaperJam**

            * **PaperLow**'
        CommunicationOKFlag:
          type: boolean
          description: 'Indicates if the communication infrastructure is working and
            usable.

            If communication infrastructure present.'
        CashHandlingDevice:
          type: array
          items:
            $ref: '#/components/schemas/CashHandlingDevice'
          description: 'Status of cash handling device.

            If cash handling devices present.'
        FraudPreventionFlag:
          type: boolean
          description: 'Indicates a suspicion of fraud by the POI System.

            Could be set to True by the POI system to notify to the Sale system and
            the Cashier that a suspicion of fraud had been detected on the POI as
            an unexpected reboot of the POI.'
      required:
      - GlobalStatus
    Response:
      type: object
      description: 'Result of a message request processing.

        If Result is Success, `ErrorCondition` is absent or not used in the processing
        of the message. In the other cases, the `ErrorCondition` has to be present
        and can refine the processing of the message response. `AdditionalResponse`
        gives more information about the success or the failure of the message request
        processing, for logging without real time involvements.'
      properties:
        Result:
          $ref: '#/components/schemas/Result'
          description: 'Result of the processing of the message.

            Possible values:

            * **Failure**

            * **Partial**

            * **Success**'
        ErrorCondition:
          $ref: '#/components/schemas/ErrorCondition'
          description: 'Condition that has produced an error on the processing of
            a message request.

            Returned if Result is not Success.

            Possible values:

            * **Aborted**

            * **Busy**

            * **Cancel**

            * **DeviceOut**

            * **InProgress**

            * **InsertedCard**

            * **InvalidCard**

            * **LoggedOut**

            * **MessageFormat**

            * **NotAllowed**

            * **NotFound**

            * **PaymentRestriction**

            * **Refusal**

            * **UnavailableDevice**

            * **UnavailableService**

            * **UnreachableHost**

            * **WrongPIN**'
        AdditionalResponse:
          type: string
          pattern: ^.+$
          description: 'Additional information related to processing status of a message
            request.

            If present, the POI logs it for further examination.'
      required:
      - Result
    POISoftware:
      type: object
      description: Information related to the software of the POI System which manages
        the Sale to POI protocol. In a session allows identifying the product features
        of a POI System.
      properties:
        ManufacturerID:
          type: string
          pattern: ^.+$
          description: Identification of the Manufacturer. Sent in the Login Request
            (Response) to identify the Sale System (POI System) manufacturer during
            the session.
        ApplicationName:
          type: string
          pattern: ^.+$
          description: Name of the software product. Sent in the Login Request (Response)
            to identify the Sale System (POI System) product name during the session.
        SoftwareVersion:
          type: string
          pattern: ^.+$
          description: Version of the software product. Sent in the Login Request
            (Response) to identify the version of the Sale System (POI System) product
            software during the session.
        CertificationCode:
          type: string
          pattern: ^.+$
          description: Certification code of the software which manages the Sale to
            POI protocol. Sent in the Login Request (Response) to get the certification
            code of the Sale System (POI System) product software. This code can be
            a software checksum or any number associated with the software.
      required:
      - ManufacturerID
      - ApplicationName
      - SoftwareVersion
      - CertificationCode
    POIProfile:
      type: object
      properties:
        GenericProfile:
          $ref: '#/components/schemas/GenericProfile'
          description: 'Possible values:

            * **Basic**

            * **Extended**

            * **Standard**'
        ServiceProfiles:
          $ref: '#/components/schemas/ServiceProfiles'
          description: 'Possible values:

            * **Batch**

            * **CardReader**

            * **Communication**

            * **Loyalty**

            * **OneTimeRes**

            * **PIN**

            * **Reservation**

            * **Sound**

            * **StoredValue**

            * **Synchro**'
    POITerminalData:
      type: object
      description: Information related to the software and hardware features of the
        POI Terminal. In a session, it allows identifying the features of the POI
        Terminal attached to a Sale Terminal per Login Request message.
      properties:
        TerminalEnvironment:
          $ref: '#/components/schemas/TerminalEnvironment'
          description: 'Environment of the Terminal. Sent in the Login Request (Response)
            to identify the environment of the Sale System (POI System) during the
            session. In other message, when the data has changed since the Login.

            Possible values:

            * **Attended**

            * **SemiAttended**

            * **Unattended**'
        POICapabilities:
          $ref: '#/components/schemas/POICapabilities'
          description: 'Hardware capabilities of the POI Terminal. They are the POI
            capabilities the POI System allows the Sale System to use. These POI capabilities
            include the logical devices enumerated in the devices data element (most
            of these devices could be on the POI part), plus card reader devices.
            Sent in the Login Response to identify the devices of the POI Terminal
            which can be used by the Sale System during the session.

            Possible values:

            * **CashHandling**

            * **CashierDisplay**

            * **CashierError**

            * **CashierInput**

            * **CustomerDisplay**

            * **CustomerError**

            * **CustomerInput**

            * **EMVContactless**

            * **ICC**

            * **MagStripe**

            * **PrinterDocument**

            * **PrinterReceipt**

            * **PrinterVoucher**'
        POIProfile:
          $ref: '#/components/schemas/POIProfile'
          description: Functional profile of the POI Terminal. Sent in the Login Response
            to identify the profiles the POI Terminal support during the session.
        POISerialNumber:
          type: string
          pattern: ^.+$
          description: Serial number of a POI Terminal. Sent in the Login Request
            by the Sale System to inform the POI System about the last known POI Terminal
            hardware.
      required:
      - TerminalEnvironment
      - POICapabilities
      - POISerialNumber
    POISystemData:
      type: object
      properties:
        DateTime:
          type: string
          format: date-time
          description: Date and Time. In the response, the POI System gives its date
            and time to the Sale System.
        POISoftware:
          $ref: '#/components/schemas/POISoftware'
        POITerminalData:
          $ref: '#/components/schemas/POITerminalData'
        POIStatus:
          $ref: '#/components/schemas/POIStatus'
      required:
      - DateTime
      - POISoftware
    OutputText:
      type: object
      description: 'Content of text message to display or print.

        It conveys information related to the content of the text message and its
        format. All the data elements related to the format of the text to display
        or print are parameters valid for the whole text content.'
      properties:
        Text:
          type: string
          description: Content of text message to display, print or play.
        CharacterSet:
          type: integer
          description: Character height of the text string to display or print. Absence
            of this data element means the characters have normal height.
        Font:
          type: string
          pattern: ^.+$
          description: Name of the font. Used to change character font of the output,
            as agreed between the POI and Sale Systems.
        StartRow:
          type: integer
          minimum: 1
          maximum: 500
          description: Row where the text string has to be displayed or printed.
        StartColumn:
          type: integer
          minimum: 1
          maximum: 500
          description: Column where the text string has to be displayed or printed.
        Color:
          $ref: '#/components/schemas/Color'
          description: 'Color of the text string to display or print.

            Possible values:

            * **Black**

            * **Blue**

            * **Cyan**

            * **Green**

            * **Magenta**

            * **Red**

            * **White**

            * **Yellow**'
        CharacterWidth:
          $ref: '#/components/schemas/CharacterWidth'
          description: 'Character width of the text string to display or print. Absence
            of this data element means the characters have normal width.

            Possible values:

            * **DoubleWidth**

            * **SingleWidth**'
        CharacterHeight:
          $ref: '#/components/schemas/CharacterHeight'
          description: 'Character height of the text string to display or print. Absence
            of this data element means the characters have normal height.

            Possible values:

            * **DoubleHeight**

            * **HalfHeight**

            * **SingleHeight**'
        CharacterStyle:
          $ref: '#/components/schemas/CharacterStyle'
          description: 'Typographic style of the sequence of characters to display
            or print. Absence of this data element means the characters have normal
            style.

            Possible values:

            * **Bold**

            * **Italic**

            * **Normal**

            * **Underline**'
        Alignment:
          $ref: '#/components/schemas/Alignment'
          description: 'Alignment of the text string on the display line or print
            line. Absence of this data element means the characters have normal alignment.

            Possible values:

            * **Centred**

            * **Justified**

            * **Left**

            * **Right**'
        EndOfLineFlag:
          type: boolean
          default: true
          description: Indicates if the text is at the end of a line. Allows the display
            or the print of a new line and a carry-over return characters after the
            formatted text.
      required:
      - Text
    PredefinedContent:
      type: object
      description: 'Reference of a predefined message to display or print.

        It conveys information related to the predefined message.'
      properties:
        ReferenceID:
          type: string
          pattern: ^.+$
          description: Identification of a predefined message to display or print.
        Language:
          type: string
          pattern: ^[a-z]{2,2}$
          description: Identification of a language.
      required:
      - ReferenceID
    OutputBarcode:
      type: object
      properties:
        BarcodeType:
          $ref: '#/components/schemas/BarcodeType'
          description: 'Type of Barcode coding. Qualification of the barcode value
            to display or print.

            Possible values:

            * **Code128**

            * **Code25**

            * **EAN13**

            * **EAN8**

            * **PDF417**

            * **QRCode**

            * **UPCA**'
        BarcodeValue:
          type: string
          pattern: ^.+$
          description: Value with a Barcode coding. The barcode value to display or
            print.
      required:
      - BarcodeValue
    OutputContent:
      type: object
      description: 'Content to display or print.

        This is a sequence of elements if they have different formats.'
      properties:
        OutputFormat:
          $ref: '#/components/schemas/OutputFormat'
          description: 'Format of the content to display or print.

            Possible values:

            * **BarCode**

            * **MessageRef**

            * **Text**

            * **XHTML**'
        PredefinedContent:
          $ref: '#/components/schemas/PredefinedContent'
          description: 'Reference of a predefined message to display or print.

            Mandatory, if `OutputFormat` is MessageRef, not allowed otherwise.'
        OutputText:
          type: array
          items:
            $ref: '#/components/schemas/OutputText'
          description: 'Content of text message to display or print.

            Mandatory, if `OutputFormat` is Text, not allowed otherwise. One instance
            of `OutputText` per shared format.'
        OutputXHTML:
          type: string
          format: byte
          pattern: ^.{0,262144}$
          description: 'XHTML document body containing the message to display or print.

            Mandatory if `OutputFormat` is XHTML, not allowed otherwise.'
        OutputBarcode:
          $ref: '#/components/schemas/OutputBarcode'
          description: 'Barcode content to display or print.

            Mandatory if `OutputFormat` is Barcode, not allowed otherwise.'
      required:
      - OutputFormat
    MenuEntry:
      type: object
      description: 'An entry of the menu to present to the Cashier.

        It conveys message text and parameters of the menu entry. This output data
        could be only provided for an input command, in order to choose an entry of
        the menu.'
      properties:
        MenuEntryTag:
          $ref: '#/components/schemas/MenuEntryTag'
          description: 'Characteristics related to the selection of a menu entry.

            Possible values:

            * **NonSelectable**

            * **NonSelectableSubMenu**

            * **Selectable**

            * **SubMenu**'
        DefaultSelectedFlag:
          type: boolean
          default: false
          description: Selection of a menu entry to be displayed. In Input request
            message, it allows selection of one or several menu entries before any
            user action.
        OutputFormat:
          $ref: '#/components/schemas/OutputFormat'
          description: 'Possible values:

            * **BarCode**

            * **MessageRef**

            * **Text**

            * **XHTML**'
        PredefinedContent:
          $ref: '#/components/schemas/PredefinedContent'
        OutputText:
          type: array
          items:
            $ref: '#/components/schemas/OutputText'
          description: Content of text message to display or print. It conveys Information
            related to the content of the text message and its format. All the data
            elements related to the format of the text to display or print are parameters
            valid for the whole Text content.
        OutputXHTML:
          type: string
          format: byte
          pattern: ^.+$
          description: XHTML document body containing the message to display or print.
      required:
      - OutputFormat
    DisplayOutput:
      type: object
      description: 'Information to display and how to process it.

        Contains a complete display operation for a Display or an Input Device type.
        For the Input Devices, Diagnosis and `EnableService`, `ResponseRequiredFlag`,
        and `MinimumDisplayTime` shall be absent.'
      properties:
        ResponseRequiredFlag:
          type: boolean
          default: true
          description: Indicates if the message response is required.
        MinimumDisplayTime:
          type: integer
          minimum: 0
          maximum: 999
          default: 0
          description: Number of seconds the message has to be displayed.
        Device:
          $ref: '#/components/schemas/Device'
          description: 'Logical device located on a Sale Terminal or a POI Terminal,
            in terms of class of information to output (display, print, or store),
            or input (keyboard) for the Cashier or the Customer.

            Possible values:

            * **CashierDisplay**

            * **CashierInput**

            * **CustomerDisplay**

            * **CustomerInput**'
        InfoQualify:
          $ref: '#/components/schemas/InfoQualify'
          description: 'Qualification of the information to sent to an output logical
            device, to display or print to the Cashier or the Customer. Allows the
            manager of the device, Sale or POI Terminal, to send the information to
            a particular physical device or to present the information accordingly.

            Possible values:

            * **CustomerAssistance**

            * **Display**

            * **Document**

            * **Error**

            * **Input**

            * **POIReplication**

            * **Receipt**

            * **Sound**

            * **Status**

            * **Voucher**'
        OutputContent:
          $ref: '#/components/schemas/OutputContent'
          description: Content to display or print.
        MenuEntry:
          type: array
          items:
            $ref: '#/components/schemas/MenuEntry'
          description: An entry of the menu to present to the Cashier. It conveys
            the message text and parameters of the menu entry. This output data could
            be only provided for an input command, in order to choose an entryof the
            menu.
        OutputSignature:
          type: string
          format: byte
          pattern: ^.+$
          description: 'Vendor-specific signature of the text message to display or
            print.

            If protection has to be provided to the vendor on the text to display
            or print.'
      required:
      - Device
      - InfoQualify
      - OutputContent
    SaleItem:
      type: object
      description: 'Sale items of a transaction.

        In loyalty or value added payment card transaction, the items of the sale
        that are processed in the transaction.'
      properties:
        ItemID:
          type: integer
          description: Item identification inside a transaction (0 to n).
        ProductCode:
          type: integer
          minimum: 1
          maximum: 20
          description: Product code of item purchased with the transaction.
        EanUpc:
          type: integer
          description: 'Standard product code of item purchased with the transaction.

            If data sent, POI has to store it and send it if the host protocol allows
            it.'
        UnitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
          description: 'Unit of measure of a quantity.

            If Quantity is present.

            Possible values:

            * **Case**

            * **Centilitre**

            * **Centimetre**

            * **Foot**

            * **Gram**

            * **Inch**

            * **Kilogram**

            * **Kilometre**

            * **Litre**

            * **Meter**

            * **Mile**

            * **Other**

            * **Ounce**

            * **Pint**

            * **Pound**

            * **Quart**

            * **UKGallon**

            * **USGallon**

            * **Yard**'
        Quantity:
          type: string
          description: 'Product quantity.

            If data is sent, POI has to store it and send it if the host protocol
            allows it.'
        UnitPrice:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: 'Price per unit of product.

            If Quantity is present.'
        ItemAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Total amount of the item line.
        TaxCode:
          type: integer
          description: 'Type of taxes associated with the line item.

            If data is sent, POI has to store it and send it if the host protocol
            allows it.'
        SaleChannel:
          type: integer
          description: 'Commercial or distribution channel associated with the line
            item.

            If data sent, POI has to store it and send it if the host protocol allows
            it.'
        ProductLabel:
          type: string
          pattern: ^.+$
          description: Product name of an item purchased with the transaction.
        AdditionalProductInfo:
          type: string
          pattern: ^.+$
          description: 'Additional information related to the line item.

            If data sent, POI has to store it and send it if the host protocol allows
            it.'
      required:
      - ItemID
      - ProductCode
      - ItemAmount
    LoyaltyAmount:
      type: object
      description: 'Amount of a loyalty account.

        An awarded amount or an amount to redeem to the loyalty account might be sent
        in the Payment request message.'
      properties:
        LoyaltyUnit:
          $ref: '#/components/schemas/LoyaltyUnit'
          description: 'Unit of a loyalty amount. The amount could be expressed in
            point or in a monetary value and a currency.

            Possible values:

            * **Monetary**

            * **Point**'
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        AmountValue:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Value of an amount.
      required:
      - AmountValue
    LoyaltyAccountID:
      type: object
      description: 'Identification of a Loyalty account.

        In the Payment or the Loyalty Request message, it allows to identify the loyalty
        account by the Sale Terminal instead of the POI Terminal (e.g. because the
        account identification is a bar-code read by the Cashier on a scanner device).'
      properties:
        EntryMode:
          $ref: '#/components/schemas/EntryMode'
          description: 'Entry mode of the payment instrument information. In the Payment,
            Loyalty or StoredValue Request messages, it informs the POI System the
            entry mode of the payment instrument information when read by the Sale
            Terminal. In the Payment, Loyalty or StoredValue Response messages, it
            informs the Sale System the entry mode of the payment instrument.

            Possible values:

            * **Contactless**

            * **File**

            * **ICC**

            * **Keyed**

            * **MagStripe**

            * **Manual**

            * **Mobile**

            * **RFID**

            * **Scanned**

            * **SynchronousICC**

            * **Tapped**'
        IdentificationType:
          $ref: '#/components/schemas/IdentificationType'
          description: 'Type of account identification. In a request message, it informs
            the POI System the type of the account or card identification, when provided
            by the Sale Terminal. (e.g. because the card information is a barcode
            read by the Cashier on a scanner device). In a response message, it informs
            the Sale System the type of the account or card identification.

            Possible values:

            * **AccountNumber**

            * **BarCode**

            * **ISOTrack2**

            * **PAN**

            * **PhoneNumber**'
        IdentificationSupport:
          $ref: '#/components/schemas/IdentificationSupport'
          description: 'Support of the loyalty account identification. Allows knowing
            where and how you have found the loyalty account identification.

            Possible values:

            * **HybridCard**

            * **LinkedCard**

            * **LoyaltyCard**

            * **NoCard**'
        LoyaltyID:
          type: string
          description: Loyalty account identification conforming to the IdentificationType.
      required:
      - EntryMode
      - IdentificationType
      - LoyaltyID
    LoyaltyData:
      type: object
      description: 'In the Payment, Loyalty or Balance Inquiry Request message, it
        allows the Sale Terminal to send the identification of the loyalty account
        or an awarded amount or an amount to redeem to the loyalty account.

        Data related to a Loyalty program or account.'
      properties:
        CardAcquisitionReference:
          $ref: '#/components/schemas/TransactionIDType'
          description: 'Reference to the last CardAcquisition, to use the same card.

            If the loyalty account ID comes from a previous CardAcquisition.'
        LoyaltyAccountID:
          $ref: '#/components/schemas/LoyaltyAccountID'
          description: 'Identification of a Loyalty account.

            If loyalty identification of the loyalty account is realised by the Sale
            System.'
        LoyaltyAmount:
          $ref: '#/components/schemas/LoyaltyAmount'
          description: 'Amount of a loyalty account.

            When the Sale System want to award the Loyalty account (not for BalanceInquiryRequest).'
    CheckData:
      type: object
      description: 'Information related to the paper check used for the transaction.

        Allows the check information to be provided by the Sale System before requesting
        the payment, or stored by the Sale System after processing of the payment.'
      properties:
        BankID:
          type: string
          pattern: ^.+$
          description: 'Identification of the bank.

            Mandatory if TrackData absent.'
        AccountNumber:
          type: string
          pattern: ^.+$
          description: 'Identification of the customer account.

            Mandatory if TrackData absent.'
        CheckNumber:
          type: string
          pattern: ^.+$
          description: 'Identification of the bank check.

            Mandatory if TrackData absent.'
        TrackData:
          $ref: '#/components/schemas/TrackData'
          description: 'Magnetic track or magnetic ink characters line.

            Mandatory if CheckNumber absent.'
        CheckCardNumber:
          type: string
          pattern: ^.+$
          description: 'Check guarantee card number.

            If provided by the customer.'
        TypeCode:
          $ref: '#/components/schemas/TypeCode'
          description: 'Type of bank check.

            Possible values:

            * **Company**

            * **Personal**'
        Country:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: 'Country of the bank check.

            Absent if country of the Sale system.'
    SensitiveMobileData:
      type: object
      properties:
        MSISDN:
          type: integer
          description: Mobile Subscriber Integrated Service Digital Network (i.e.
            mobile phone number of the SIM card). Country, National Destination Code,
            and Subscriber Number.
        IMSI:
          type: integer
          description: International Mobile Subscriber Identity. Unique number associated
            with the mobile phone user, containing the Mobile Country Code (MCC),
            the Mobile Network Code (MNC), and the Mobile Identification Number (MSIN)
        IMEI:
          type: integer
          description: International Mobile Equipment Identity. Unique number associated
            with the mobile phone device.
      required:
      - MSISDN
    UTMCoordinates:
      type: object
      properties:
        UTMZone:
          type: string
          pattern: ^.+$
          description: UTM grid zone combination of the longitude zone (1 to 60) and
            the latitude band (C to X, excluding I and O).
        UTMEastward:
          type: string
          pattern: ^.+$
          description: X-coordinate of the Universal Transverse Mercator coordinate
            system.
        UTMNorthward:
          type: string
          pattern: ^.+$
          description: Y-coordinate of the Universal Transverse Mercator coordinate
            system.
      required:
      - UTMZone
      - UTMEastward
      - UTMNorthward
    GeographicCoordinates:
      type: object
      properties:
        Latitude:
          type: string
          pattern: ^.+$
          description: Angular distance of a location on the earth south or north
            of the equator.
        Longitude:
          type: string
          pattern: ^.+$
          description: Angular measurement of the distance of a location on the earth
            east or west of the Greenwich observatory.
      required:
      - Latitude
      - Longitude
    Geolocation:
      type: object
      properties:
        GeographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
        UTMCoordinates:
          $ref: '#/components/schemas/UTMCoordinates'
    MobileData:
      type: object
      description: 'Mobile phone is used as a payment instrument for the transaction.

        Information related to the mobile for the payment transaction.'
      properties:
        MobileCountryCode:
          type: integer
          minimum: 3
          maximum: 3
          description: 'Identifies the country of a mobile phone operator.

            If data available.'
        MobileNetworkCode:
          type: integer
          minimum: 2
          maximum: 3
          description: 'Identifies the mobile phone operator inside a country.

            If data available.'
        MaskedMSISDN:
          type: integer
          description: 'Masked Mobile Subscriber Integrated Service Digital Network.

            If data available.'
        Geolocation:
          $ref: '#/components/schemas/Geolocation'
          description: 'Geographic location specified by geographic or UTM coordinates.

            If data available.'
        ProtectedMobileData:
          type: string
          description: 'Sensitive information related to the mobile phone, protected
            by CMS.

            SensitiveMobileData.'
        SensitiveMobileData:
          $ref: '#/components/schemas/SensitiveMobileData'
          description: 'Sensitive information related to the mobile phone.

            If unprotected mobile data.'
    Instalment:
      type: object
      properties:
        InstalmentType:
          $ref: '#/components/schemas/InstalmentType'
          description: 'Type of instalment transaction. For requesting an instalment
            payment transaction.

            Possible values:

            * **DeferredInstalments**

            * **EqualInstalments**

            * **InequalInstalments**'
        SequenceNumber:
          type: integer
          description: Sequence number of the instalment. For an instalment payment
            transaction, number of the payment, from 1 to TotalNbOfPayments.
        PlanID:
          type: string
          pattern: ^.+$
          description: Identification of an instalment plan.
        Period:
          type: integer
          description: Period of time with defined unit of time. A period between
            2 payment instalments.
        PeriodUnit:
          $ref: '#/components/schemas/PeriodUnit'
          description: 'Type of instalment transaction.

            Possible values:

            * **Annual**

            * **Daily**

            * **Monthly**

            * **Weekly**'
        FirstPaymentDate:
          type: string
          format: date
          description: First date of a payment. For instalment, the date of the first
            payments, if not immediate.
        TotalNbOfPayments:
          type: integer
          description: Total number of payments. For instalment, the number of payments,
            including the first one.
        CumulativeAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Sum of a collection of amounts. Total amount of the payment
            instalments.
        FirstAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: First amount of the payment instalments.
        Charges:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Charges related to a transaction. Charge related to the payment
            instalments.
    StoredValueAccountID:
      type: object
      description: Identification of the stored value account or the stored value
        card and the associated product sold by the Sale System for stored value requests.
      properties:
        StoredValueAccountType:
          $ref: '#/components/schemas/StoredValueAccountType'
          description: 'Type of stored value account. Allows the distinction of the
            stored value instrument to access the stored value account.

            Possible values:

            * **GiftCard**

            * **Other**

            * **PhoneCard**'
        StoredValueProvider:
          type: string
          pattern: ^.+$
          description: Identification of the provider of the stored value account
            load/reload. When the ProductCode is not sufficient to identify the provider
            host which delivers the load or reload of the stored value account (for
            example if it contains the identification of the application.)
        OwnerName:
          type: string
          pattern: ^.+$
          description: Name of the owner of a stored value account.
        ExpiryDate:
          type: integer
          minimum: 4
          maximum: 4
          description: Date after which the card cannot be used. If EMV expiry date
            is present, it overrides Track2 information. Format is MMYY.
        EntryMode:
          $ref: '#/components/schemas/EntryMode'
          description: 'Entry mode of the payment instrument information. In the Payment,
            Loyalty, or StoredValue Request messages, it informs the POI System the
            entry mode of the payment instrument information when read by the Sale
            Terminal. (e.g. because the payment instrument information are a barcode
            read by the Cashier on a scanner device).

            Possible values:

            * **Contactless**

            * **File**

            * **ICC**

            * **Keyed**

            * **MagStripe**

            * **Manual**

            * **Mobile**

            * **RFID**

            * **Scanned**

            * **SynchronousICC**

            * **Tapped**'
        IdentificationType:
          $ref: '#/components/schemas/IdentificationType'
          description: 'Type of account identification. In a request message, it informs
            the POI System the type of the account or card identification, when provided
            by the Sale Terminal. (e.g. because the card information is a barcode
            read by the Cashier on a scanner device). In a response message, it informs
            the Sale System the type of the account or card identification.

            Possible values:

            * **AccountNumber**

            * **BarCode**

            * **ISOTrack2**

            * **PAN**

            * **PhoneNumber**'
        StoredValueID:
          type: string
          pattern: ^.+$
          description: Stored value account identification. The identification of
            the stored value account conforming to the IdentificationType.
      required:
      - StoredValueAccountType
      - EntryMode
      - IdentificationType
      - StoredValueID
    PaymentInstrumentData:
      type: object
      description: 'Data related to the instrument of payment for the transaction.

        Sent in the result of the payment transaction. For a card, it could also be
        sent in the `CardAcquisition` response, to be processed by the Sale System.'
      properties:
        PaymentInstrumentType:
          $ref: '#/components/schemas/PaymentInstrumentType'
          description: 'Type of payment instrument.

            Possible values:

            * **Card**

            * **Cash**

            * **Check**

            * **Mobile**

            * **StoredValue**'
        ProtectedCardData:
          type: string
          description: 'Sensitive information related to the payment card, protected
            by CMS.

            SensitiveCardData protected by CMS EnvelopedData.'
        CardData:
          $ref: '#/components/schemas/CardData'
          description: 'Information related to the payment card used for the transaction.

            If PaymentInstrumentType is Card.'
        CheckData:
          $ref: '#/components/schemas/CheckData'
          description: 'Information related to the paper check used for the transaction.

            If PaymentInstrumentType is Check.'
        MobileData:
          $ref: '#/components/schemas/MobileData'
          description: 'Information related to the mobile for the payment transaction.

            If PaymentInstrumentType is Mobile.'
        StoredValueAccountID:
          $ref: '#/components/schemas/StoredValueAccountID'
      required:
      - PaymentInstrumentType
    OriginalPOITransaction:
      type: object
      description: 'Identification of a previous POI transaction.

        In the Payment or the Loyalty Request message, it allows using the card of
        a previous CardAcquisition or Payment/Loyalty request.'
      properties:
        SaleID:
          type: string
          pattern: ^.+$
          description: Identification of a Sale System for the NEXO SaletoPOI protocol.
        POIID:
          type: string
          pattern: ^.+$
          description: 'Identification of a payment terminal for the NEXO SaletoPOI
            protocol.

            If original transaction is coming from another POI.'
        POITransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: 'Unique identification of a POI transaction for a POI.

            Absent if SaleReferenceID is sufficient to identify the transaction.'
        ReuseCardDataFlag:
          type: boolean
          default: true
          description: Indicates if the card data has to be retrieved from a previous
            transaction.
        ApprovalCode:
          type: string
          pattern: ^.+$
          description: 'Code assigned to a transaction approval by the Acquirer.

            If referral.'
        AcquirerID:
          type: integer
          description: 'Identification of the Acquirer.

            Restrict to the Acquirer if present.'
        AmountValue:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Value of an amount.
        HostTransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: 'Identification of the transaction by the host in charge of
            the stored value transaction.

            If POITransactionID not present.'
    TransactionConditions:
      type: object
      description: Conditions on which the transaction must be processed.
      properties:
        AllowedPaymentBrand:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: 'Payment brands accepted for this transaction.

              Card payment brands allowed by the Sale System for the payment transaction.

              Restrict brand if data sent.'
          description: 'Payment brands accepted for this transaction.

            Card payment brands allowed by the Sale System for the payment transaction.

            Restrict brand if data sent.'
        AcquirerID:
          type: array
          items:
            type: integer
            description: 'Identification of the Acquirer.

              Restrict to these Acquirer if present.'
          description: 'Identification of the Acquirer.

            Restrict to these Acquirer if present.'
        DebitPreferredFlag:
          type: boolean
          description: The preferred type of payment is a debit transaction rather
            than a credit transaction.
        AllowedLoyaltyBrand:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: 'Loyalty brands or programs allowed by the Sale System for
              the loyalty transaction.

              Restrict brand if data sent.'
          description: 'Loyalty brands or programs allowed by the Sale System for
            the loyalty transaction.

            Restrict brand if data sent.'
        LoyaltyHandling:
          $ref: '#/components/schemas/LoyaltyHandling'
          description: 'Type of Loyalty processing requested by the Sale System.

            Possible values:

            * **Allowed**

            * **Forbidden**

            * **Processed**

            * **Proposed**

            * **Required**'
        ForceOnlineFlag:
          type: boolean
          default: false
          description: 'Indicates if the Cashier requires POI forces online access
            to the Acquirer.

            Go online if data sent.'
        ForceEntryMode:
          $ref: '#/components/schemas/ForceEntryMode'
          description: 'Payment instrument entry mode requested by the Sale System.

            Restrict entry mode if sent.

            Possible values:

            * **CheckReader**

            * **Contactless**

            * **File**

            * **ICC**

            * **Keyed**

            * **MagStripe**

            * **Manual**

            * **RFID**

            * **Scanned**

            * **SynchronousICC**

            * **Tapped**'
        MerchantCategoryCode:
          type: string
          pattern: ^.{3,4}$
          description: 'The code which identifies the category of the transaction
            (MCC).

            The payment implies a specific MCC.'
    PaymentData:
      type: object
      properties:
        PaymentType:
          $ref: '#/components/schemas/PaymentType'
          description: 'Type of payment transaction. Elements requested by the Sale
            System that are related to the payment only.

            Possible values:

            * **CashAdvance**

            * **CashDeposit**

            * **Completion**

            * **FirstReservation**

            * **Instalment**

            * **IssuerInstalment**

            * **Normal**

            * **OneTimeReservation**

            * **PaidOut**

            * **Recurring**

            * **Refund**

            * **UpdateReservation**'
        SplitPaymentFlag:
          type: boolean
          default: false
          description: Indicates if the payment of the Sale transaction is split.
            Allows the POI to decline payment means that cannot accept split payment.
        RequestedValidityDate:
          type: string
          format: date
          description: Requested validity date for the reservation. Allows a specific
            period for the reservation according to the need of the Merchant for the
            first reservation and the reservation updates as well.
        CardAcquisitionReference:
          $ref: '#/components/schemas/TransactionIDType'
        Instalment:
          $ref: '#/components/schemas/Instalment'
          description: Information related an instalment transaction. To request an
            instalment to the issuer, or to make individual instalments of a payment
            transaction.
        CustomerOrder:
          $ref: '#/components/schemas/CustomerOrder'
        PaymentInstrumentData:
          $ref: '#/components/schemas/PaymentInstrumentData'
    AmountsReq:
      type: object
      description: Various amounts related to the payment and loyalty request from
        the Sale System.
      properties:
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        RequestedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Amount requested by the Sale for the payment.
        CashBackAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: The cash-back part of the amount requested by the Sale for
            the payment.
        TipAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Amount paid for a tip. Allow the printing of the tip on the
            receipt, and to qualify the tip part of the amount.
        PaidAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: "Amount already paid in case of split payment. Depending on\
            \ the context, a split payment is either a split amount, or a split basket\
            \ (required by some payment means as fleet cards). The PaidAmount is present\
            \ when the split payment is a split\n     of the amount. Split of the\
            \ basket involves two Sale Transactions, and does not have to be recognised\
            \ by\n     the POI."
        MinimumAmountToDeliver:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Minimum amount the Sale System is allowed to deliver for this
            payment. For the OneTimeReservation, when the maximum amount is unknown,
            the Sale System indicates the minimum amount it allows.
        MaximumCashBackAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: "Maximum amount which could be requested for cash-back to the\
            \ Sale System. Allows the Cashier\n   to limit the amount value of cash-back\
            \ to deliver to the Customer."
        MinimumSplitAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Minimum amount of a split, which could be requested by a Customer.Allows
            the Merchant to limit the number of split requested by the Customer.
      required:
      - Currency
      - RequestedAmount
    PaymentTransaction:
      type: object
      properties:
        AmountsReq:
          $ref: '#/components/schemas/AmountsReq'
          description: Various amounts related to the payment and loyalty request
            from the Sale System.
        OriginalPOITransaction:
          $ref: '#/components/schemas/OriginalPOITransaction'
        TransactionConditions:
          $ref: '#/components/schemas/TransactionConditions'
        SaleItem:
          type: array
          items:
            $ref: '#/components/schemas/SaleItem'
          description: Sale items of a transaction. In loyalty or value added payment
            card transaction, the items of the sale that are processed in the transaction.
      required:
      - AmountsReq
    ConvertedAmount:
      type: object
      properties:
        AmountValue:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Value of an amount.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
      required:
      - AmountValue
      - Currency
    CurrencyConversion:
      type: object
      description: 'Information related to a currency conversion.

        A currency conversion occurred in the payment, and the merchant needs to know
        information related to this conversion (e.g. to print on the sale receipt).'
      properties:
        CustomerApprovedFlag:
          type: boolean
          default: true
          description: Notify if the customer has approved something. Indicates if
            the customer has accepted a currency conversion.
        ConvertedAmount:
          $ref: '#/components/schemas/ConvertedAmount'
          description: Amount after a currency conversion.
        Rate:
          type: string
          description: Rate of currency conversion.
        Markup:
          type: string
          description: Markup of a currency conversion amount as a percentage.
        Commission:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Commission for a currency conversion.
        Declaration:
          type: string
          pattern: ^.+$
          description: 'Declaration to present to the customer or the cashier for
            validation.

            If a declaration has to be presented to the customer.'
      required:
      - ConvertedAmount
    Point:
      type: object
      properties:
        X:
          type: string
          description: The hexadecimal value of the coordinates of a point on the
            abscissa.
        Y:
          type: string
          description: The hexadecimal value of the coordinates of a point on the
            ordinate.
      required:
      - X
      - Y
    SaleItemRebate:
      type: object
      description: 'To be differentiated from the award which is the amount or quantity
        earned on the loyalty account.

        The awarded amount that is attached to an item as a rebate.'
      properties:
        ItemID:
          type: integer
          description: Item identification inside a transaction (0 to n).
        ProductCode:
          type: integer
          minimum: 1
          maximum: 20
          description: Product code of item purchased with the transaction.
        EanUpc:
          type: integer
          description: Standard product code of item purchased with the transaction.
        UnitOfMeasure:
          $ref: '#/components/schemas/UnitOfMeasure'
          description: 'Unit of measure of a quantity.

            If Quantity present.

            Possible values:

            * **Case**

            * **Centilitre**

            * **Centimetre**

            * **Foot**

            * **Gram**

            * **Inch**

            * **Kilogram**

            * **Kilometre**

            * **Litre**

            * **Meter**

            * **Mile**

            * **Other**

            * **Ounce**

            * **Pint**

            * **Pound**

            * **Quart**

            * **UKGallon**

            * **USGallon**

            * **Yard**'
        Quantity:
          type: string
          description: 'Product quantity.

            If rebate is additional units.'
        ItemAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: 'Total amount of the item line.

            If rebate on the line item amount.'
        RebateLabel:
          type: string
          pattern: ^.+$
          description: 'Short text to qualify a rebate on an line item.

            If provided by the Acquirer.'
      required:
      - ItemID
      - ProductCode
    LoyaltyAccount:
      type: object
      description: 'This data structure conveys the identification of the account
        and the associated loyalty brand.

        Data related to a loyalty account processed in the transaction.'
      properties:
        LoyaltyAccountID:
          $ref: '#/components/schemas/LoyaltyAccountID'
          description: Identification of a Loyalty account.
        LoyaltyBrand:
          type: string
          pattern: ^.+$
          description: 'Identification of a Loyalty brand.

            If a card is analysed.'
      required:
      - LoyaltyAccountID
    LoyaltyAcquirerData:
      type: object
      properties:
        LoyaltyAcquirerID:
          type: string
          pattern: ^.+$
          description: Identification of the loyalty Acquirer.
        ApprovalCode:
          type: string
          pattern: ^.+$
          description: Code assigned to a transaction approval by the Acquirer. Could
            be an identifier of the approved transaction for the Acquirer. This data
            element is conditional for the Loyalty Acquirers. Used in the PaymentRequest
            request for a referral.
        LoyaltyTransactionID:
          $ref: '#/components/schemas/TransactionIDType'
        HostReconciliationID:
          type: string
          pattern: ^.+$
          description: Identifier of a reconciliation period with a payment or loyalty
            host. Allows the assignment of a transaction to the Acquirer reconciliation
            (or batch).
    Rebates:
      type: object
      properties:
        TotalRebate:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: The global awarded amount that is not attached to an item.
        RebateLabel:
          type: string
          pattern: ^.+$
          description: Short text to qualify a rebate on an line item. Text to be
            printed on a receipt in front of the rebate on an item or the rebate on
            the totals.
        SaleItemRebate:
          type: array
          items:
            $ref: '#/components/schemas/SaleItemRebate'
          description: The awarded amount that is attached to an item as a rebate.
            To be differentiated from the award which is the amount or quantity earned
            on the loyalty account.
    LoyaltyResult:
      type: object
      description: 'Data related to the result of a processed loyalty transaction.

        In the Message Response, the result of each loyalty brand transaction.'
      properties:
        LoyaltyAccount:
          $ref: '#/components/schemas/LoyaltyAccount'
          description: Data related to a loyalty account processed in the transaction.
        CurrentBalance:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: 'Balance of an account.

            If known (provided by the card or an external host).'
        LoyaltyAmount:
          $ref: '#/components/schemas/LoyaltyAmount'
          description: 'Amount of a loyalty account.

            If awarded amount.'
        LoyaltyAcquirerData:
          $ref: '#/components/schemas/LoyaltyAcquirerData'
          description: 'Data related to the loyalty Acquirer during a loyalty transaction.

            If content not empty.'
        Rebates:
          $ref: '#/components/schemas/Rebates'
          description: 'Rebate form to an award.

            If rebates awarded.'
      required:
      - LoyaltyAccount
    PaymentReceipt:
      type: object
      description: 'Customer or Merchant payment receipt.

        If the payment receipts are printed by the Sale system and the POI or the
        Sale does not implement the Print exchange (Basic profile).'
      properties:
        DocumentQualifier:
          $ref: '#/components/schemas/DocumentQualifier'
          description: 'Qualification of the document to print to the Cashier or the
            Customer.

            SaleReceipt or CashierReceipt.

            Possible values:

            * **CashierReceipt**

            * **CustomerReceipt**

            * **Document**

            * **Journal**

            * **SaleReceipt**

            * **Voucher**'
        IntegratedPrintFlag:
          type: boolean
          description: Type of the print integrated to other prints.
        RequiredSignatureFlag:
          type: boolean
          default: false
          description: Indicate that the cardholder payment receipt requires a physical
            signature by the Customer.
        OutputContent:
          $ref: '#/components/schemas/OutputContent'
          description: Content to display or print.
      required:
      - DocumentQualifier
      - OutputContent
    PaymentAcquirerData:
      type: object
      description: Data related to the response from the payment Acquirer.
      properties:
        AcquirerID:
          type: integer
          description: 'Identification of the Acquirer.

            Identification of the Acquirer when the POI System is multi-acquirer.'
        MerchantID:
          type: string
          pattern: ^.+$
          description: Identification of the Merchant for the Acquirer.
        AcquirerPOIID:
          type: string
          pattern: ^.+$
          description: Identification of the POI for the payment Acquirer.
        AcquirerTransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: 'Identification of the Transaction for the Acquirer.

            If provided by the Acquirer.'
        ApprovalCode:
          type: string
          pattern: ^.+$
          description: 'Code assigned to a transaction approval by the Acquirer.

            If available.'
        HostReconciliationID:
          type: string
          pattern: ^.+$
          description: Identifier of a reconciliation period with a payment or loyalty
            host. Allows the assignment of a transaction to the Acquirer reconciliation
            (or batch).
      required:
      - MerchantID
      - AcquirerPOIID
    AreaSize:
      type: object
      properties:
        X:
          type: string
          description: Abscissa of a point coordinates. The hexadecimal value in text
            of the abscissa of the coordinates of a point. Leading zero can be removed
            (e.g. 3BC, 0, and 1287).
        Y:
          type: string
          description: Ordinate of a point coordinates. The hexadecimal value in text
            of the ordinate of the coordinates of a point. Leading zero can be removed
            (e.g. 3BC, 0, and 1287).
      required:
      - X
      - Y
    CapturedSignature:
      type: object
      properties:
        AreaSize:
          $ref: '#/components/schemas/AreaSize'
          description: Size of an area. Contain the size of the pad area where the
            signature is written, given with the maximum abscissa and ordinate values
            (X and Y). The maximum value is FFFF.
        SignaturePoint:
          type: array
          items:
            $ref: '#/components/schemas/Point'
          description: Coordinates of a point where the pen changes direction or lift.
            Contain the Coordinates of a point of the written signature where the
            pen changes direction or lift where (X and Y). When the signer lifts the
            pen, both X and Y have the value FFFF.
    AmountsResp:
      type: object
      properties:
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        AuthorizedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Amount requested by the Sale for the payment.
        TotalRebatesAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Sum of rebates in amount (total amount or line item amount)
            for all the loyalty programs.
        TotalFeesAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Total amount of financial fees.
        CashBackAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: The cash-back part of the amount requested by the Sale for
            the payment.
        TipAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Amount paid for a tip. Allow the printing of the tip on the
            receipt, and to qualify the tip part of the amount.
      required:
      - AuthorizedAmount
    PaymentResult:
      type: object
      properties:
        PaymentType:
          $ref: '#/components/schemas/PaymentType'
          description: 'Type of payment transaction. Elements requested by the Sale
            System that are related to the payment only.

            Possible values:

            * **CashAdvance**

            * **CashDeposit**

            * **Completion**

            * **FirstReservation**

            * **Instalment**

            * **IssuerInstalment**

            * **Normal**

            * **OneTimeReservation**

            * **PaidOut**

            * **Recurring**

            * **Refund**

            * **UpdateReservation**'
        PaymentInstrumentData:
          $ref: '#/components/schemas/PaymentInstrumentData'
        AmountsResp:
          $ref: '#/components/schemas/AmountsResp'
          description: "Various amounts related to the payment response from the POI\
            \ System. Amounts approved by the POI and the Acquirer for the payment\
            \ and loyalty transaction, containing:\n  * The authorised amount to be\
            \ paid.\n  * The amount of the rebates.\n  * The amount of financial fees.\n\
            \  * The cash back part of the requested amount for a payment with cash\
            \ back.\n  * The tip part of the requested amount for a payment with tip."
        Instalment:
          $ref: '#/components/schemas/Instalment'
          description: Information related an instalment transaction. To request an
            instalment to the issuer, or to make individual instalments of a payment
            transaction.
        CurrencyConversion:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyConversion'
          description: Information related to a currency conversion. A currency conversion
            occurred in the payment, and the merchant needs to know information related
            to this conversion (e.g. to print on the sale receipt).
        MerchantOverrideFlag:
          type: boolean
          default: false
          description: Indicates that the Merchant forced the result of the payment
            to successful. Allows the Sale System to be sure that the payment has
            been forced.
        CapturedSignature:
          $ref: '#/components/schemas/CapturedSignature'
          description: "Numeric value of a handwritten signature. Contains the value\
            \ of a handwritten signature, e.g. the signature of a cardholder on the\
            \ merchant payment receipt. Only one format of the signature is allowed:\n\
            \  * The size of the pad area where the signature is written, given with\
            \ the maximum abscissa and ordinate values.\n  * The sequence of coordinates\
            \ where the pen changes direction or lift."
        ProtectedSignature:
          type: string
          description: Numeric value of a handwritten signature. Contains the value
            of a handwritten signature, e.g. the signature of a cardholder on the
            merchant payment receipt. The format before encryption is the encoded
            data structure CapturedSignature. The data structure before encryption
            includes the start and end tags for an XML encoding, the identifier and
            length bytes for an ASN.1 encoding, and the complete member ProtectedSignature
            for a JSON encoding.
        OnlineFlag:
          type: boolean
          default: true
          description: Indicate that the payment transaction processing has required
            the approval of a host. Allows the Sale System to know if the payment
            was online or offline.
        AuthenticationMethod:
          $ref: '#/components/schemas/AuthenticationMethod'
          description: 'Method for customer authentication. Allows the Sale System
            informed about customer authentication for the payment transaction.

            Possible values:

            * **Bypass**

            * **ManualVerification**

            * **MerchantAuthentication**

            * **OfflinePIN**

            * **OnlinePIN**

            * **PaperSignature**

            * **SecureCertificate**

            * **SecureNoCertificate**

            * **SecuredChannel**

            * **SignatureCapture**

            * **UnknownMethod**'
        ValidityDate:
          type: string
          format: date
          description: End of the validity period for the reservation, for the first
            reservation, and the reservation updates as well.
        PaymentAcquirerData:
          $ref: '#/components/schemas/PaymentAcquirerData'
    CardAcquisitionTransaction:
      type: object
      properties:
        AllowedPaymentBrand:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: Card payment brands allowed by the Sale System for the payment
              transaction.
          description: Card payment brands allowed by the Sale System for the payment
            transaction.
        AllowedLoyaltyBrand:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: Loyalty brands or programs allowed by the Sale System for
              the loyalty transaction.
          description: Loyalty brands or programs allowed by the Sale System for the
            loyalty transaction.
        LoyaltyHandling:
          $ref: '#/components/schemas/LoyaltyHandling'
          description: 'Type of Loyalty processing requested by the Sale System. An
            way to specify what the POI has to handle concerning the loyalty.

            Possible values:

            * **Allowed**

            * **Forbidden**

            * **Processed**

            * **Proposed**

            * **Required**'
        ForceEntryMode:
          $ref: '#/components/schemas/ForceEntryMode'
          description: 'Payment instrument entry mode requested by the Sale System.
            Avoid retry on an out of order card reading device, when the sale system
            knows that some card entry modes on the POI do not work.

            Possible values:

            * **CheckReader**

            * **Contactless**

            * **File**

            * **ICC**

            * **Keyed**

            * **MagStripe**

            * **Manual**

            * **RFID**

            * **Scanned**

            * **SynchronousICC**

            * **Tapped**'
        ForceCustomerSelectionFlag:
          type: boolean
          description: Indicates if the Customer realises the selection of the card
            application.
        TotalAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Amount of a transaction. In the Card Acquisition Request message,
            it allows the processing of a contactless card.
        PaymentType:
          $ref: '#/components/schemas/PaymentType'
          description: 'Type of payment transaction. Elements requested by the Sale
            System that are related to the payment only.

            Possible values:

            * **CashAdvance**

            * **CashDeposit**

            * **Completion**

            * **FirstReservation**

            * **Instalment**

            * **IssuerInstalment**

            * **Normal**

            * **OneTimeReservation**

            * **PaidOut**

            * **Recurring**

            * **Refund**

            * **UpdateReservation**'
        CashBackFlag:
          type: boolean
          description: Cash back has been requested with the payment transaction.
            Allows choice of the Customer language when the POI displays messages
            or print text to Merchant interface.
    LoyaltyTransaction:
      type: object
      properties:
        LoyaltyTransactionType:
          $ref: '#/components/schemas/LoyaltyTransactionType'
          description: "Type of loyalty transaction. These types of loyalty transactions\
            \ use the same message requests:\n  * **Award**: direct or payment-related\
            \ award on a loyalty account.\n  * **Rebate**: rebate on a total amount,\
            \ sale item amount, or sale items.\n  * **Redemption**: redemption on\
            \ a loyalty account.\n  * **AwardRefund**: refund of a loyalty award transaction.\n\
            \  * **RebateRefund**: refund of a loyalty rebate transaction.\n  * **RedemptionRefund**:\
            \ refund of a loyalty redemption transaction.\nPossible values:\n* **Award**\n\
            * **AwardRefund**\n* **Rebate**\n* **RebateRefund**\n* **Redemption**\n\
            * **RedemptionRefund**"
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        TotalAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: "Amount of a transaction. In the Loyalty Request message, it\
            \ notifies the amount of the payment transaction on which the loyalty\
            \ transaction has to be processed.\n  In the Card Acquisition Request\
            \ message, it allows the processing of a contactless card."
        OriginalPOITransaction:
          $ref: '#/components/schemas/OriginalPOITransaction'
        TransactionConditions:
          $ref: '#/components/schemas/TransactionConditions'
        SaleItem:
          type: array
          items:
            $ref: '#/components/schemas/SaleItem'
          description: "In loyalty or value added payment card transaction, Sale items\
            \ included in a transaction.\n  The sum of the item amount could be more\
            \ than the Requested amount in case of split payment without split of\
            \ the items (split basket).\n  In the StoredValue request message, sale\
            \ items differentiate the Stored Value product with the EanUpc data element\
            \ which has to be present."
      required:
      - LoyaltyTransactionType
    StoredValueData:
      type: object
      description: 'It contains: - the identification of the stored value accounts
        or the stored value cards, if provided by the Sale System, and - the associated
        products sold by the Sale System..

        Data related to the stored value card.'
      properties:
        StoredValueProvider:
          type: string
          pattern: ^.+$
          description: 'Identification of the provider of the stored value account
            load/reload.

            If more than one provider to manage on the POI, and StoredValueAccountID
            absent.'
        StoredValueTransactionType:
          $ref: '#/components/schemas/StoredValueTransactionType'
          description: 'Identification of operation to proceed on the stored value
            account or the stored value card.

            Possible values:

            * **Activate**

            * **Duplicate**

            * **Load**

            * **Reserve**

            * **Reverse**

            * **Unload**'
        StoredValueAccountID:
          $ref: '#/components/schemas/StoredValueAccountID'
          description: 'Identification of the stored value account or the stored value
            card.

            If the identification of the Stored Value account or card has been made
            by the Sale System before the request.'
        OriginalPOITransaction:
          $ref: '#/components/schemas/OriginalPOITransaction'
          description: 'Identification of a previous POI transaction.

            If StoredValueTransactionType is Reverse or Duplicate.'
        ProductCode:
          type: integer
          minimum: 1
          maximum: 20
          description: Product code of item purchased with the transaction.
        EanUpc:
          type: integer
          description: Standard product code of item purchased with the transaction.
        ItemAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Total amount of the item line.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
      required:
      - StoredValueTransactionType
    StoredValueAccountStatus:
      type: object
      properties:
        StoredValueAccountID:
          $ref: '#/components/schemas/StoredValueAccountID'
        CurrentBalance:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: If relevant and known.
      required:
      - StoredValueAccountID
    StoredValueResult:
      type: object
      description: 'For each stored value card loaded or reloaded, in the StoredValue
        response message.

        Result of loading/reloading a stored value card..'
      properties:
        StoredValueTransactionType:
          $ref: '#/components/schemas/StoredValueTransactionType'
          description: 'Identification of operation to proceed on the stored value
            account or the stored value card.

            Copy.

            Possible values:

            * **Activate**

            * **Duplicate**

            * **Load**

            * **Reserve**

            * **Reverse**

            * **Unload**'
        ProductCode:
          type: integer
          minimum: 1
          maximum: 20
          description: 'Product code of item purchased with the transaction.

            Copy.'
        EanUpc:
          type: integer
          description: 'Standard product code of item purchased with the transaction.

            Copy.'
        ItemAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Total amount of the item line.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: 'Currency of a monetary amount.

            Copy.'
        StoredValueAccountStatus:
          $ref: '#/components/schemas/StoredValueAccountStatus'
          description: Data related to the result of the stored value card transaction.
        HostTransactionID:
          $ref: '#/components/schemas/TransactionIDType'
          description: 'Identification of the transaction by the host in charge of
            the stored value transaction.

            If provided by the Host.'
      required:
      - StoredValueTransactionType
    PerformedTransaction:
      type: object
      properties:
        Response:
          $ref: '#/components/schemas/Response'
        SaleData:
          $ref: '#/components/schemas/SaleData'
        POIData:
          $ref: '#/components/schemas/POIData'
        PaymentResult:
          $ref: '#/components/schemas/PaymentResult'
        LoyaltyResult:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyResult'
        ReversedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
      required:
      - Response
    PaymentTotals:
      type: object
      description: Totals of the payment transaction during the reconciliation period.
      properties:
        TransactionType:
          $ref: '#/components/schemas/TransactionType'
          description: 'Type of transaction for which totals are grouped.

            Debit, Credit, ReverseDebit, ReverseCredit, OneTimeReservation, CompletedDeffered,
            FirstReservation, UpdateReservation, CompletedReservation, CashAdvance.

            Possible values:

            * **Award**

            * **CashAdvance**

            * **CompletedDeffered**

            * **CompletedReservation**

            * **Credit**

            * **Debit**

            * **Declined**

            * **Failed**

            * **FirstReservation**

            * **IssuerInstalment**

            * **OneTimeReservation**

            * **Rebate**

            * **Redemption**

            * **ReverseAward**

            * **ReverseCredit**

            * **ReverseDebit**

            * **ReverseRebate**

            * **ReverseRedemption**

            * **UpdateReservation**'
        TransactionCount:
          type: integer
          description: Number of processed transaction during the period.
        TransactionAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Sum of amount of processed transaction during the period.
      required:
      - TransactionType
      - TransactionCount
      - TransactionAmount
    LoyaltyTotals:
      type: object
      description: Totals of the loyalty transaction during the reconciliation period.
      properties:
        TransactionType:
          $ref: '#/components/schemas/TransactionType'
          description: 'Type of transaction for which totals are grouped.

            Award, ReverseAward, Redemption, ReverseRedemption, Rebate, ReverseRebate.

            Possible values:

            * **Award**

            * **CashAdvance**

            * **CompletedDeffered**

            * **CompletedReservation**

            * **Credit**

            * **Debit**

            * **Declined**

            * **Failed**

            * **FirstReservation**

            * **IssuerInstalment**

            * **OneTimeReservation**

            * **Rebate**

            * **Redemption**

            * **ReverseAward**

            * **ReverseCredit**

            * **ReverseDebit**

            * **ReverseRebate**

            * **ReverseRedemption**

            * **UpdateReservation**'
        TransactionCount:
          type: integer
          description: Number of processed transaction during the period.
        TransactionAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Sum of amount of processed transaction during the period.
      required:
      - TransactionType
      - TransactionCount
      - TransactionAmount
    TransactionTotals:
      type: object
      description: 'If Result is Success, contains all the totals, classified as required
        by the Sale in the message request. At least, transaction totals are provided
        per Acquirer, Acquirer Settlement, and Card Brand.

        Result of the Sale to POI Reconciliation processing.'
      properties:
        PaymentInstrumentType:
          $ref: '#/components/schemas/PaymentInstrumentType'
          description: 'Type of payment instrument.

            Possible values:

            * **Card**

            * **Cash**

            * **Check**

            * **Mobile**

            * **StoredValue**'
        AcquirerID:
          type: integer
          description: Identification of the Acquirer.
        HostReconciliationID:
          type: string
          pattern: ^.+$
          description: Identifier of a reconciliation period with a payment or loyalty
            host.
        CardBrand:
          type: string
          pattern: ^.+$
          description: 'Type of payment or loyalty card.

            If configured to present totals per card brand, and Response.Result is
            Success.'
        POIID:
          type: string
          pattern: ^.+$
          description: 'Identification of a POI System or a POI Terminal for the Sale
            to POI protocol.

            Sent if requested in the message request.'
        SaleID:
          type: string
          pattern: ^.+$
          description: 'Identification of a Sale System or a Sale Terminal for the
            Sale to POI protocol.

            Sent if requested in the message request.'
        OperatorID:
          type: string
          pattern: ^.+$
          description: 'Identification of the Cashier or Operator.

            Sent if requested in the message request.'
        ShiftNumber:
          type: string
          pattern: ^.+$
          description: 'Shift number.

            Sent if requested in the message request.'
        TotalsGroupID:
          type: string
          pattern: ^.{1,16}$
          description: 'Identification of a group of transaction on a POI Terminal,
            having the same Sale features.

            Sent if requested in the message request.'
        PaymentCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        PaymentTotals:
          type: array
          items:
            $ref: '#/components/schemas/PaymentTotals'
          description: 'Totals of the payment transaction during the reconciliation
            period.

            If both `TransactionCount` and `TransactionAmount` are not equal to zero.'
        LoyaltyUnit:
          $ref: '#/components/schemas/LoyaltyUnit'
          description: 'Unit of a loyalty amount.

            Possible values:

            * **Monetary**

            * **Point**'
        LoyaltyCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: 'Currency of a monetary amount.

            Sent if `LoyaltyUnit` is Monetary.'
        LoyaltyTotals:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyTotals'
          description: 'Totals of the loyalty transaction during the reconciliation
            period.

            If both `TransactionCount` and `TransactionAmount` are not equal to zero.'
      required:
      - PaymentInstrumentType
    TotalFilter:
      type: object
      properties:
        POIID:
          type: string
          pattern: ^.+$
          description: Identification of a POI System or a POI Terminal for the Sale
            to POI protocol.
        SaleID:
          type: string
          pattern: ^.+$
          description: Identification of a Sale System or a Sale Terminal for the
            Sale to POI protocol.
        OperatorID:
          type: string
          pattern: ^.+$
          description: Identification of the Cashier or Operator.
        ShiftNumber:
          type: string
          pattern: ^.+$
          description: Shift number.
        TotalsGroupID:
          type: string
          pattern: ^.{1,16}$
          description: Sent if totals in the response have to be computed only for
            this particular value of TotalsGroupID.
    PaymentAccountReq:
      type: object
      properties:
        AccountType:
          $ref: '#/components/schemas/AccountType'
          description: 'Type of cardholder account used for the transaction. Allows
            a cardholder to select the type of account used for the transaction.

            Possible values:

            * **CardTotals**

            * **Checking**

            * **CreditCard**

            * **Default**

            * **EpurseCard**

            * **Investment**

            * **Savings**

            * **Universal**'
        CardAcquisitionReference:
          $ref: '#/components/schemas/TransactionIDType'
        PaymentInstrumentData:
          $ref: '#/components/schemas/PaymentInstrumentData'
    LoyaltyAccountReq:
      type: object
      properties:
        CardAcquisitionReference:
          $ref: '#/components/schemas/TransactionIDType'
        LoyaltyAccountID:
          $ref: '#/components/schemas/LoyaltyAccountID'
    PaymentAccountStatus:
      type: object
      properties:
        PaymentInstrumentData:
          $ref: '#/components/schemas/PaymentInstrumentData'
        CurrentBalance:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Balance of an account after processing of the transaction.
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
        PaymentAcquirerData:
          $ref: '#/components/schemas/PaymentAcquirerData'
    LoyaltyAccountStatus:
      type: object
      properties:
        LoyaltyAccount:
          $ref: '#/components/schemas/LoyaltyAccount'
        CurrentBalance:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: Balance of an account after processing of the transaction.
        LoyaltyUnit:
          $ref: '#/components/schemas/LoyaltyUnit'
          description: 'Unit of a loyalty amount. The amount could be expressed in
            point or in a monetary value and a currency.

            Possible values:

            * **Monetary**

            * **Point**'
        Currency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: Currency of a monetary amount.
      required:
      - LoyaltyAccount
    MessageReference:
      type: object
      description: 'Identification of a previous POI transaction.

        To abort a transaction in progress or to request the status of a transaction
        from which no response has been received. It identifies the message header
        of the message request to abort or request the status.'
      properties:
        MessageCategory:
          $ref: '#/components/schemas/MessageCategory'
          description: 'Category of message.

            CardAcquisition, Display, Input, Loyalty, Payment, Print, CardReaderAPDU,
            CardReaderInit, CardReaderPowerOff.

            Possible values:

            * **Abort**

            * **Admin**

            * **BalanceInquiry**

            * **Batch**

            * **CardAcquisition**

            * **CardReaderAPDU**

            * **CardReaderInit**

            * **CardReaderPowerOff**

            * **Diagnosis**

            * **Display**

            * **EnableService**

            * **Event**

            * **GetTotals**

            * **Input**

            * **InputUpdate**

            * **Login**

            * **Logout**

            * **Loyalty**

            * **None**

            * **PIN**

            * **Payment**

            * **Print**

            * **Reconciliation**

            * **Reversal**

            * **Sound**

            * **StoredValue**

            * **TransactionStatus**

            * **Transmit**'
        ServiceID:
          type: string
          pattern: ^.{1,10}$
          description: Identification of a message pair, which processes a transaction.
        DeviceID:
          type: string
          pattern: ^.{1,10}$
          description: Identification of a device message pair.
        SaleID:
          type: string
          pattern: ^.+$
          description: 'Identification of a Sale System or a Sale Terminal for the
            Sale to POI protocol.

            default MessageHeader.SaleID.'
        POIID:
          type: string
          pattern: ^.+$
          description: 'Identification of a POI System or a POI Terminal for the Sale
            to POI protocol.

            Default `MessageHeader.POIID`.'
    MessageHeader:
      type: object
      description: 'Message header of the Sale to POI protocol message.

        It conveys Information related to the Sale to POI protocol management.'
      properties:
        ProtocolVersion:
          type: string
          pattern: ^.+$
          description: If MessageCategory is Login or Diagnosis.
        MessageClass:
          $ref: '#/components/schemas/MessageClass'
          description: 'Class of the message.

            Possible values:

            * **Device**

            * **Event**

            * **Service**'
        MessageCategory:
          $ref: '#/components/schemas/MessageCategory'
          description: 'Category of message.

            Possible values:

            * **Abort**

            * **Admin**

            * **BalanceInquiry**

            * **Batch**

            * **CardAcquisition**

            * **CardReaderAPDU**

            * **CardReaderInit**

            * **CardReaderPowerOff**

            * **Diagnosis**

            * **Display**

            * **EnableService**

            * **Event**

            * **GetTotals**

            * **Input**

            * **InputUpdate**

            * **Login**

            * **Logout**

            * **Loyalty**

            * **None**

            * **PIN**

            * **Payment**

            * **Print**

            * **Reconciliation**

            * **Reversal**

            * **Sound**

            * **StoredValue**

            * **TransactionStatus**

            * **Transmit**'
        MessageType:
          $ref: '#/components/schemas/MessageType'
          description: 'Type of message of the Sale to POI protocol.

            Possible values:

            * **Notification**

            * **Request**

            * **Response**'
        ServiceID:
          type: string
          pattern: ^.{1,10}$
          description: 'Identification of a message pair, which processes a transaction.

            Required if Service or Event MessageClass message or if Device MessageClass
            and request from POI or response from Sale.'
        DeviceID:
          type: string
          pattern: ^.{1,10}$
          description: 'Identification of a device message pair.

            If Device MessageClass.'
        SaleID:
          type: string
          pattern: ^.+$
          description: Identification of a Sale System or a Sale Terminal for the
            Sale to POI protocol.
        POIID:
          type: string
          pattern: ^.+$
          description: Identification of a POI System or a POI Terminal for the Sale
            to POI protocol.
      required:
      - MessageClass
      - MessageCategory
      - MessageType
      - SaleID
      - POIID
    RepeatedResponseMessageBody:
      type: object
      properties:
        LoyaltyResponse:
          $ref: '#/components/schemas/LoyaltyResponse'
        PaymentResponse:
          $ref: '#/components/schemas/PaymentResponse'
        ReversalResponse:
          $ref: '#/components/schemas/ReversalResponse'
        StoredValueResponse:
          $ref: '#/components/schemas/StoredValueResponse'
        CardAcquisitionResponse:
          $ref: '#/components/schemas/CardAcquisitionResponse'
        CardReaderAPDUResponse:
          $ref: '#/components/schemas/CardReaderAPDUResponse'
    RepeatedMessageResponse:
      type: object
      properties:
        MessageHeader:
          $ref: '#/components/schemas/MessageHeader'
        RepeatedResponseMessageBody:
          $ref: '#/components/schemas/RepeatedResponseMessageBody'
      required:
      - MessageHeader
      - RepeatedResponseMessageBody
    HostStatus:
      type: object
      description: 'Indicate the reachability of the host by the POI Terminal.

        State of a Host.'
      properties:
        AcquirerID:
          type: integer
          description: Identification of the Acquirer.
        IsReachableFlag:
          type: boolean
          default: true
          description: Indicate if a Host is reachable.
      required:
      - AcquirerID
    OutputResult:
      type: object
      description: 'In the message response, it contains the result of the output,
        if required in the message request.

        Information related to the result the output (display, print, input).'
      properties:
        Device:
          $ref: '#/components/schemas/Device'
          description: 'Logical device located on a Sale Terminal or a POI Terminal,
            in term of class of information to output (display, print or store), or
            input (keyboard) for the Cashier or the Customer.

            Copy.

            Possible values:

            * **CashierDisplay**

            * **CashierInput**

            * **CustomerDisplay**

            * **CustomerInput**'
        InfoQualify:
          $ref: '#/components/schemas/InfoQualify'
          description: 'Qualification of the information to sent to an output logical
            device, to display or print to the Cashier or the Customer.

            Copy.

            Possible values:

            * **CustomerAssistance**

            * **Display**

            * **Document**

            * **Error**

            * **Input**

            * **POIReplication**

            * **Receipt**

            * **Sound**

            * **Status**

            * **Voucher**'
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
      required:
      - Device
      - InfoQualify
      - Response
    InputData:
      type: object
      properties:
        Device:
          $ref: '#/components/schemas/Device'
          description: 'Logical device located on a Sale Terminal or a POI Terminal,
            regarding the class of information to output (display, print or store),
            or input (keyboard) for the Cashier or the Customer.

            Possible values:

            * **CashierDisplay**

            * **CashierInput**

            * **CustomerDisplay**

            * **CustomerInput**'
        InfoQualify:
          $ref: '#/components/schemas/InfoQualify'
          description: 'Qualification of the information to send to an output logical
            device, to display or print to the Cashier or the Customer.

            Possible values:

            * **CustomerAssistance**

            * **Display**

            * **Document**

            * **Error**

            * **Input**

            * **POIReplication**

            * **Receipt**

            * **Sound**

            * **Status**

            * **Voucher**'
        InputCommand:
          $ref: '#/components/schemas/InputCommand'
          description: 'Type of requested input. Can be: **GetConfirmation**, **TextString**,
            **DigitString**, **DecimalString** or **GetMenuEntry**.

            Possible values:

            * **DecimalString**

            * **DigitString**

            * **GetAnyKey**

            * **GetConfirmation**

            * **GetFunctionKey**

            * **GetMenuEntry**

            * **Password**

            * **SiteManager**

            * **TextString**'
        NotifyCardInputFlag:
          type: boolean
          default: false
          description: Request Notification of the card entered in the POI card reader.
        MaxInputTime:
          type: integer
          description: Maximum input time in seconds. Limits the time to answer to
            an Input request message.
        ImmediateResponseFlag:
          type: boolean
          default: false
          description: Indicates whether to request an Immediate response to the message
            without waiting for the completion of the command.
        MinLength:
          type: integer
          description: Minimum length of an entered string, or minimum number of entries
            that can be selected in a menu.
        MaxLength:
          type: integer
          description: Maximum length of an entered string, or maximum number of entries
            that can be selected in a menu.
        MaxDecimalLength:
          type: integer
          description: Maximum input length of the decimal part (without decimal point).
        WaitUserValidationFlag:
          type: boolean
          default: true
          description: Indicates that the user must confirm the entered characters,
            when the maximum allowed length is reached. During the processing of an
            Input command `TextString`, `DigitString` or `DecimalString` with `MaxLength`
            or `MaxDecimalLength` present in the request.
        DefaultInputString:
          type: string
          pattern: ^.+$
          description: 'Default string value for an input command. On the `TextString`,
            `DigitString` and `DecimalString` input commands: default string displayed
            on the input field before entering the string. In `GetConfirmation` input
            command: **Y** for yes, **N** for no.'
        DefaultLayoutString:
          type: string
          pattern: ^.+$
        StringMask:
          type: string
          pattern: ^.+$
          description: String mask to get information requiring a specific format.
            For the processing of an Input command `TextString`, `DigitString` or
            `DecimalString`. Some information as date or plate number required to
            be entered with a certain format.
        FromRightToLeftFlag:
          type: boolean
          default: false
          description: Indicates if the entered character has to be displayed from
            the right to the left of the display field.
        MaskCharactersFlag:
          type: boolean
          default: false
          description: Indicates to mask the characters entered by the user (i.e.
            replacing in the display of the input, the entered character by a standard
            character as *).
        BeepKeyFlag:
          type: boolean
          default: false
          description: Indicates, when the user press a key, if a beep has to be generated
            (value True).
        GlobalCorrectionFlag:
          type: boolean
          default: false
          description: Indicates, when the user presses the Correct function key in
            an input entry, if all the entered characters are removed (value True)
            or only the last entered character if any (value False).
        DisableCancelFlag:
          type: boolean
          default: false
          description: Indicates if the Cancel function key has to be deactivated
            (value True).
        DisableCorrectFlag:
          type: boolean
          default: false
          description: Indicates if the Correct function key has to be deactivated
            (value True). During the processing of an Input command `GetConfirmation`,
            `SiteManager`, or `GetMenuEntry`.
        DisableValidFlag:
          type: boolean
          default: false
          description: Indicates if the Valid function key has to be deactivated (value
            True). During the processing of an Input command `GetConfirmation`, `SiteManager`,
            or `GetMenuEntry`.
        MenuBackFlag:
          type: boolean
          default: false
          description: If it has the value True, it indicates that the Back function
            key (respectively Home function key) may be used to go back to the immediate
            upper level of the menu. If it has the value False, it indicates that
            the current menu level has no parent menu.
      required:
      - Device
      - InfoQualify
      - InputCommand
    Input:
      type: object
      properties:
        InputCommand:
          $ref: '#/components/schemas/InputCommand'
          description: 'Type of requested input. Can be: **GetConfirmation**, **TextString**,
            **DigitString**, **DecimalString** or **GetMenuEntry**.

            Possible values:

            * **DecimalString**

            * **DigitString**

            * **GetAnyKey**

            * **GetConfirmation**

            * **GetFunctionKey**

            * **GetMenuEntry**

            * **Password**

            * **SiteManager**

            * **TextString**'
        ConfirmedFlag:
          type: boolean
          description: Indicates te response of the user from the `GetConfirmation`
            input command.
        FunctionKey:
          type: integer
          description: The number of the function key which is typed by the Customer
            on the POI or the Cashier on the Sale Terminal.
        TextInput:
          type: string
          description: The text typed by the Customer on the POI or by the Cashier
            on the Sale Terminal.
        DigitInput:
          type: integer
          description: The digits typed by the Customer on the POI or by the Cashier
            on the Sale Terminal.
        Password:
          type: string
          description: The text password typed by the Customer on the POI or by the
            Cashier on the Sale Terminal.
        MenuEntryNumber:
          type: array
          items:
            type: integer
            description: The index of the menu item (from 1 to n) which is selected
              by the Cashier on the Sale Terminal. The value -1 indicates that the
              immediate upper level of the menu is requested. The value 0 indicates
              that the root of the menu is requested.
          description: The index of the menu item (from 1 to n) which is selected
            by the Cashier on the Sale Terminal. The value -1 indicates that the immediate
            upper level of the menu is requested. The value 0 indicates that the root
            of the menu is requested.
      required:
      - InputCommand
    InputResult:
      type: object
      properties:
        Device:
          $ref: '#/components/schemas/Device'
          description: 'Logical device located on a Sale Terminal or a POI Terminal,
            in terms of class of information to output (display, print or store),
            or input (keyboard) for the Cashier or the Customer.

            Possible values:

            * **CashierDisplay**

            * **CashierInput**

            * **CustomerDisplay**

            * **CustomerInput**'
        InfoQualify:
          $ref: '#/components/schemas/InfoQualify'
          description: 'Qualification of the information to send to an output logical
            device, to display or print to the Cashier or the Customer.

            Possible values:

            * **CustomerAssistance**

            * **Display**

            * **Document**

            * **Error**

            * **Input**

            * **POIReplication**

            * **Receipt**

            * **Sound**

            * **Status**

            * **Voucher**'
        Response:
          $ref: '#/components/schemas/Response'
        Input:
          $ref: '#/components/schemas/Input'
          description: Data entered by the user, related to the input command.
      required:
      - Device
      - InfoQualify
      - Response
    PrintOutput:
      type: object
      properties:
        DocumentQualifier:
          $ref: '#/components/schemas/DocumentQualifier'
          description: 'Qualification of the document to print to the Cashier or the
            Customer. Allows the manager of the printer, Sale or POI Terminal, to
            send information to a physical printer or to use the paper type accordingly.

            Possible values:

            * **CashierReceipt**

            * **CustomerReceipt**

            * **Document**

            * **Journal**

            * **SaleReceipt**

            * **Voucher**'
        ResponseMode:
          $ref: '#/components/schemas/ResponseMode'
          description: 'Message response awaited by the initiator of the Request.
            Allows various types and synchronisation of requests for Print or Sound.

            Possible values:

            * **Immediate**

            * **NotRequired**

            * **PrintEnd**

            * **SoundEnd**'
        IntegratedPrintFlag:
          type: boolean
          default: false
          description: Type of the print integrated in other prints. Allows a separated
            printing (paper cut if available), or integration with the sale receipt
            or other print. If the printing is integrated, the response is always
            immediate, even if the `ResponseMode` is set to `PrintEnd`.
        RequiredSignatureFlag:
          type: boolean
          default: false
          description: Indicates that the cardholder payment receipt requires a physical
            signature by the Customer.
        OutputContent:
          $ref: '#/components/schemas/OutputContent'
          description: Content to display or print. This is a sequence of elements
            if they have different formats.
      required:
      - DocumentQualifier
      - ResponseMode
      - OutputContent
    SoundContent:
      type: object
      properties:
        SoundFormat:
          $ref: '#/components/schemas/SoundFormat'
          description: 'Possible values:

            * **MessageRef**

            * **SoundRef**

            * **Text**'
        Language:
          type: string
          pattern: ^[a-z]{2,2}$
        ReferenceID:
          type: string
          pattern: ^.+$
        Text:
          type: string
          pattern: ^.+$
      required:
      - SoundFormat
    CardHolderPIN:
      type: object
      properties:
        EncrPINBlock:
          type: string
        PINFormat:
          $ref: '#/components/schemas/PINFormat'
          description: 'Possible values:

            * **ISO0**

            * **ISO1**

            * **ISO2**

            * **ISO3**'
        AdditionalInput:
          type: string
          pattern: ^.+$
      required:
      - EncrPINBlock
      - PINFormat
    ICCResetData:
      type: object
      properties:
        ATRValue:
          type: string
          format: byte
          pattern: ^.{1,100}$
        CardStatusWords:
          type: string
          format: byte
          pattern: ^.{2,2}$
    SecurityTrailer:
      type: object
      description: 'It contains information related to the security of the message.

        SecurityTrailer as used by Adyen.'
      properties:
        AdyenCryptoVersion:
          type: integer
        KeyIdentifier:
          type: string
          pattern: ^.+$
        KeyVersion:
          type: integer
        Nonce:
          type: string
          format: byte
          pattern: ^.+$
        Hmac:
          type: string
          format: byte
          pattern: ^.+$
      required:
      - AdyenCryptoVersion
      - KeyIdentifier
      - KeyVersion
      - Nonce
      - Hmac
    LoginRequest:
      type: object
      description: 'It conveys information related to the session (period between
        a Login and the following Logout) to process.

        Content of the `LoginRequest` message.'
      properties:
        DateTime:
          type: string
          format: date-time
          description: Date and Time. In the Login request message, the Sale System
            gives its date and time to the POI System. In the Login response, the
            POI System gives its date and time to the Sale System.
        SaleSoftware:
          $ref: '#/components/schemas/SaleSoftware'
          description: Information related to the software of the Sale System which
            manages the Sale to POI protocol.
        SaleTerminalData:
          $ref: '#/components/schemas/SaleTerminalData'
          description: 'Information related to the software and hardware feature of
            the Sale Terminal.

            Present if the login involve a Sale Terminal.'
        TrainingModeFlag:
          type: boolean
          default: false
          description: 'Training mode.

            This flag indicates to the POI that the entire session will be not used
            to make real transaction, but is used for test of system or operator training.'
        OperatorLanguage:
          type: string
          pattern: ^[a-z]{2,2}$
          description: 'Language of the Cashier or Operator.

            Default value for Device type displays.'
        OperatorID:
          type: string
          pattern: ^.+$
          description: 'Identification of the Cashier or Operator.

            Four conditions to send it:

            * The Sale System wants the POI to log it in the transaction log.

            * Because of reconciliation with total on OperatorID.

            * Because the POI needs it.

            * Acquirer or issuer need it.'
        ShiftNumber:
          type: string
          pattern: ^.+$
          description: 'Shift number.

            Same as OperatorID.'
        TokenRequestedType:
          $ref: '#/components/schemas/TokenRequestedType'
          description: "Type of token replacing the PAN of a payment card to identify\
            \ the payment\n mean of the customer. It allows, for a merchant, to use\
            \ a token for a transaction\n only or for a longer period.\nPossible values:\n\
            * **Customer**\n* **Transaction**"
        CustomerOrderReq:
          $ref: '#/components/schemas/CustomerOrderReq'
          description: 'List of customer order open, closed or both to be sent in
            the response messages.

            Possible values:

            * **Both**

            * **Closed**

            * **Open**'
        POISerialNumber:
          type: string
          pattern: ^.+$
          description: 'Serial number of a POI Terminal.

            If the login involve a POI Terminal and not the first Login to the POI
            System.'
      required:
      - DateTime
      - SaleSoftware
      - OperatorLanguage
    LogoutRequest:
      type: object
      description: 'Empty.

        Content of the Logout Request message.'
      properties:
        MaintenanceAllowed:
          type: boolean
          default: false
          description: Indicates that the POI terminal is able to or has to go to
            maintenance. Sent in the Logout Request to express that after closing
            the session, the POI may go to maintenance.
    EnableServiceRequest:
      type: object
      description: 'It conveys the services that will be enabled for the POI Terminal
        without the request of the Sale System, and a possible invitation for the
        Customer to start the services.

        Content of the Enable Service Request message.'
      properties:
        TransactionAction:
          $ref: '#/components/schemas/TransactionAction'
          description: "Action to realise on a transaction. In an `EnableService`\
            \ request message:\n  - Starts a transaction by a swipe-ahead mechanism,\
            \ with the services which are enabled.\n  - Aborts a swipe-ahead transaction\
            \ or started by a `CardAcquisition`, and not followed by a service request\
            \ from the Sale System to complete the transaction.\nPossible values:\n\
            * **AbortTransaction**\n* **StartTransaction**"
        ServicesEnabled:
          $ref: '#/components/schemas/ServicesEnabled'
          description: 'Services which are enabled before the start-up of a transaction.

            Mandatory if `TransactionAction` is `StartTransaction`, absent if not.

            Possible values:

            * **CardAcquisition**

            * **Loyalty**

            * **Payment**'
        DisplayOutput:
          $ref: '#/components/schemas/DisplayOutput'
          description: Information to display and the way to process the display.
      required:
      - TransactionAction
    AdminRequest:
      type: object
      description: 'Empty.

        Content of the Custom Admin Request message.'
      properties:
        ServiceIdentification:
          type: string
          pattern: ^.+$
          description: Identification of the administrative service to process.
    PaymentRequest:
      type: object
      description: 'Request sent to terminal to initiate payment.

        It conveys Information related to the Payment transaction to process.

        Content of the `PaymentRequest` message.'
      properties:
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        PaymentTransaction:
          $ref: '#/components/schemas/PaymentTransaction'
          description: Data related to the payment and loyalty transaction.
        PaymentData:
          $ref: '#/components/schemas/PaymentData'
          description: 'Data related to the payment transaction.

            If one data element is present.'
        LoyaltyData:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyData'
          description: 'Data related to a Loyalty program or account.

            Loyalty cards used with the payment transaction and read by the Sale System.'
      required:
      - SaleData
      - PaymentTransaction
    CardAcquisitionRequest:
      type: object
      description: 'It conveys Information related to the payment and loyalty cards
        to read and analyse. This message pair is usually followed by a message pair
        (e.g. payment or loyalty) which refers to this Card Acquisition message pair.

        Content of the Card Acquisition Request message.'
      properties:
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        CardAcquisitionTransaction:
          $ref: '#/components/schemas/CardAcquisitionTransaction'
          description: Data related to the payment and loyalty card acquisition.
      required:
      - SaleData
      - CardAcquisitionTransaction
    LoyaltyRequest:
      type: object
      description: 'It conveys Information related to the Loyalty transaction to process.

        Content of the Loyalty Request message.'
      properties:
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        LoyaltyTransaction:
          $ref: '#/components/schemas/LoyaltyTransaction'
          description: Data related to the loyalty transaction.
        LoyaltyData:
          $ref: '#/components/schemas/LoyaltyData'
          description: Data related to a Loyalty program or account.
      required:
      - SaleData
      - LoyaltyTransaction
      - LoyaltyData
    StoredValueRequest:
      type: object
      description: 'It conveys Information related to the Stored Value transaction
        to process.

        Content of the Stored Value Request message.'
      properties:
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        StoredValueData:
          type: array
          items:
            $ref: '#/components/schemas/StoredValueData'
          description: Data related to the stored value card.
      required:
      - SaleData
      - StoredValueData
    ReversalRequest:
      type: object
      description: 'It conveys Information related to the reversal of a previous payment
        or a loyalty transaction.

        Content of the Reversal Request message.'
      properties:
        SaleData:
          $ref: '#/components/schemas/SaleData'
        OriginalPOITransaction:
          $ref: '#/components/schemas/OriginalPOITransaction'
          description: Identification of a previous POI transaction.
        ReversedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: 'Amount of the payment or loyalty to reverse..

            ReversedAmount is implicitely the AuthorizedAmount if absent.'
        ReversalReason:
          $ref: '#/components/schemas/ReversalReason'
          description: 'Reason of the payment or loyalty reversal..

            Possible values:

            * **CustCancel**

            * **Malfunction**

            * **MerchantCancel**

            * **Unable2Compl**'
        CustomerOrder:
          $ref: '#/components/schemas/CustomerOrder'
      required:
      - OriginalPOITransaction
      - ReversalReason
    ReconciliationRequest:
      type: object
      description: 'Content of the Reconciliation Request message.

        It conveys Information related to the Reconciliation requested by the Sale
        System.'
      properties:
        ReconciliationType:
          $ref: '#/components/schemas/ReconciliationType'
          description: 'Type of Reconciliation requested by the Sale to the POI.

            Possible values:

            * **AcquirerReconciliation**

            * **AcquirerSynchronisation**

            * **PreviousReconciliation**

            * **SaleReconciliation**'
        AcquirerID:
          type: array
          items:
            type: integer
            description: 'Identification of the Acquirer.

              Could be present only if ReconciliationType is AcquirerReconciliation
              or AcquirerSynchronisation.'
          description: 'Identification of the Acquirer.

            Could be present only if ReconciliationType is AcquirerReconciliation
            or AcquirerSynchronisation.'
        POIReconciliationID:
          type: integer
          description: 'Identification of the reconciliation period between Sale and
            POI.

            Absent if ReconciliationType is not PreviousReconciliation.'
      required:
      - ReconciliationType
    GetTotalsRequest:
      type: object
      description: 'It conveys information from the Sale System related to the scope
        and the format of the totals to be computed by the POI System.

        Content of the Get Totals Request message.'
      properties:
        TotalDetails:
          $ref: '#/components/schemas/TotalDetails'
          description: 'Indicates the hierarchical structure of the reconciliation
            result of the Sale to POI reconciliation.

            Required to present totals per value of element included in this cluster
            (POI Terminal, Sale Terminal, Cashier, Shift, TotalsGroupID).

            Possible values:

            * **OperatorID**

            * **POIID**

            * **SaleID**

            * **ShiftNumber**

            * **TotalsGroupID**'
        TotalFilter:
          $ref: '#/components/schemas/TotalFilter'
          description: 'Filter to compute the totals.

            Used for the Get Totals, to request totals for a (or a combination of)
            particular value of the POI Terminal, Sale Terminal, Cashier, Shift, or
            TotalsGroupID.'
    BalanceInquiryRequest:
      type: object
      description: 'It conveys Information related to the account for which a Balance
        Inquiry is requested.

        Content of the Balance Inquiry Request message.'
      properties:
        PaymentAccountReq:
          $ref: '#/components/schemas/PaymentAccountReq'
          description: Data related to the account pointed by the payment card.
        LoyaltyAccountReq:
          $ref: '#/components/schemas/LoyaltyAccountReq'
          description: Data related to a requested Loyalty program or account.
    TransactionStatusRequest:
      type: object
      description: 'Content of the TransactionStatus Request message.

        It conveys Information requested for status of the last or current Payment,
        Loyalty or Reversal transaction.'
      properties:
        MessageReference:
          $ref: '#/components/schemas/MessageReference'
          description: 'Identification of a previous POI transaction.

            Present if it contains any data.'
        ReceiptReprintFlag:
          type: boolean
          default: false
          description: Request to reprint the POI receipt(s). Allows reprinting a
            receipt with a `TransactionStatus` message
        DocumentQualifier:
          type: array
          items:
            $ref: '#/components/schemas/DocumentQualifier'
          description: 'Qualification of the document to print to the Cashier or the
            Customer. Allows the manager of the printer, Sale or POI Terminal, to
            send the information to a particular physical printer or to use the paper
            type accordingly.

            Possible values:

            * **CashierReceipt**

            * **CustomerReceipt**

            * **Document**

            * **Journal**

            * **SaleReceipt**

            * **Voucher**'
    AbortRequest:
      type: object
      description: 'Body of the Abort Request message.

        It conveys Information requested for identification of the message request
        carrying the transaction to abort. A message to display on the CustomerError
        Device could be sent by the Sale System (DisplayOutput).'
      properties:
        MessageReference:
          $ref: '#/components/schemas/MessageReference'
          description: Identification of a previous POI transaction.
        AbortReason:
          type: string
          pattern: ^.+$
          description: Reason of aborting a transaction.
        DisplayOutput:
          $ref: '#/components/schemas/DisplayOutput'
          description: 'Information to display and the way to process the display.

            To display an abort message to the Customer.'
      required:
      - MessageReference
      - AbortReason
    EventNotification:
      type: object
      description: 'Content of the EventNotification message.

        It conveys Information related to the event, and possible action (maintenance,
        message to display).'
      properties:
        TimeStamp:
          type: string
          format: date-time
          description: Date and time of a transaction for the Sale System, the POI
            System or the Acquirer.
        EventToNotify:
          $ref: '#/components/schemas/EventToNotify'
          description: 'Event the POI notifies to the Sale System.

            Possible values:

            * **Abort**

            * **BeginMaintenance**

            * **CardInserted**

            * **CardRemoved**

            * **Completed**

            * **CustomerLanguage**

            * **EndMaintenance**

            * **Initialised**

            * **KeyPressed**

            * **OutOfOrder**

            * **Reject**

            * **SaleAdmin**

            * **SaleWakeUp**

            * **SecurityAlarm**

            * **Shutdown**

            * **StopAssistance**

            * **UseAnotherCardForPreauth**'
        EventDetails:
          type: string
          pattern: ^.+$
          description: 'Information about the event the POI notifies to the Sale System.

            If present, the Sale logs it for further examination.'
        RejectedMessage:
          type: string
          format: byte
          pattern: ^.+$
          description: 'Message request rejected by the receiver.

            Mandatory if EventToNotify is Reject, absent in other cases.'
        MaintenanceRequiredFlag:
          type: boolean
          default: false
          description: Indicates if the occurred event requires maintenance call or
            action.
        DisplayOutput:
          type: array
          items:
            $ref: '#/components/schemas/DisplayOutput'
          description: 'Information to display and the way to process the display.

            To display an event message.'
      required:
      - TimeStamp
      - EventToNotify
    DiagnosisRequest:
      type: object
      description: 'It conveys Information related to the target POI for which the
        diagnosis is requested.

        Content of the Diagnosis Request message.'
      properties:
        POIID:
          type: string
          pattern: ^.+$
          description: 'Identification of a POI System or a POI Terminal for the Sale
            to POI protocol.

            MessageHeader.POIID.'
        HostDiagnosisFlag:
          type: boolean
          default: false
          description: Indicates if Host Diagnosis are required.
        AcquirerID:
          type: array
          items:
            type: integer
            description: 'Identification of the Acquirer.

              Present if requesting the diagnosis of these hosts only.'
          description: 'Identification of the Acquirer.

            Present if requesting the diagnosis of these hosts only.'
    DisplayRequest:
      type: object
      description: 'It conveys the data to display and the way to process the display.
        It contains the complete content to display. It might contain an operation
        (the DisplayOutput element) per Display Device type.

        Content of the Display Request message.'
      properties:
        DisplayOutput:
          type: array
          items:
            $ref: '#/components/schemas/DisplayOutput'
          description: 'Information to display and the way to process the display.

            Complete display content for output devices. At most one DisplayOutput
            per Device/ InfoQualify pair.'
      required:
      - DisplayOutput
    InputRequest:
      type: object
      description: Content of the `InputRequest` message. It conveys the data to display
        and how to process it. In addition to the display on the Input Device, it
        might contain an operation (the `DisplayOutput` element) per Display Device
        type.
      properties:
        DisplayOutput:
          $ref: '#/components/schemas/DisplayOutput'
          description: Information to display and the way to process the display.
        InputData:
          $ref: '#/components/schemas/InputData'
          description: Information related to an Input request. It conveys the target
            input logical device, the type of input command, and possible minimum
            and maximum length of the input. In addition, if the requestor might require
            to receive an Event Notification if a card is inserted in a card reader,
            with the `NotifyCardInputFlag`.
      required:
      - InputData
    InputUpdate:
      type: object
      description: 'Definition: Content of the Input Update message. : It conveys

        update of the display of an Input request in progress.'
      properties:
        MessageReference:
          $ref: '#/components/schemas/MessageReference'
        OutputContent:
          $ref: '#/components/schemas/OutputContent'
        MenuEntry:
          type: array
          items:
            $ref: '#/components/schemas/MenuEntry'
        OutputSignature:
          type: string
          format: byte
          pattern: ^.+$
        MinLength:
          type: integer
        MaxLength:
          type: integer
        MaxDecimalLength:
          type: integer
      required:
      - MessageReference
      - OutputContent
    PrintRequest:
      type: object
      description: 'Content of the Print Request message.

        It conveys the complete data to print and how to process the print.'
      properties:
        PrintOutput:
          $ref: '#/components/schemas/PrintOutput'
          description: Information to print and how to process it.
      required:
      - PrintOutput
    CardReaderAPDURequest:
      type: object
      description: 'It contains the APDU request to send to the chip of the card,
        and a possible invitation message to display on the CashierInterface or the
        CustomerInterface.

        Content of the Card Reader APDU Request message.'
      properties:
        APDUClass:
          type: string
          format: byte
          pattern: ^.{1,1}$
          description: Class field of the APDU command (CLA). APDU request for Card
            Reader device request. For specific card like synchronous card, a private
            value should be used in accordance to ISO 7816- 4 (private range D0-FE).
        APDUInstruction:
          type: string
          format: byte
          pattern: ^.{1,1}$
          description: Instruction field of the APDU command (INS).
        APDUPar1:
          type: string
          format: byte
          pattern: ^.{1,1}$
          description: Parameter 1 field of the APDU command (P1).
        APDUPar2:
          type: string
          format: byte
          pattern: ^.{1,1}$
          description: Parameter 2 field of the APDU command(P2).
        APDUData:
          type: string
          format: byte
          pattern: ^.+$
          description: Data field of the APDU command (Lc + Data).
        APDUExpectedLength:
          type: string
          format: byte
          pattern: ^.{1,1}$
          description: Expected length of the data field of the APDU response to the
            command (Le).
      required:
      - APDUClass
      - APDUInstruction
      - APDUPar1
      - APDUPar2
    LoginResponse:
      type: object
      description: 'It conveys Information related to the Login to process.

        Content of the Login Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        POISystemData:
          $ref: '#/components/schemas/POISystemData'
          description: 'Information related to the POI System.

            Returned if the response result is Success.'
        TokenRequestStatus:
          type: boolean
          description: If token is managed by the POI, the status of the token request.
        CustomerOrderStatus:
          type: boolean
          description: If the POI supports the CustomerOrder functionality, the status
            of the customer order.
      required:
      - Response
    LogoutResponse:
      type: object
      description: 'It conveys the result of the Logout.

        Content of the Logout Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
      required:
      - Response
    EnableServiceResponse:
      type: object
      description: 'It conveys the result of the Enable Service processing.

        Content of the Enable Service Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
      required:
      - Response
    AdminResponse:
      type: object
      description: 'It conveys the result of the Custom Admin.

        Content of the Custom Admin Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
      required:
      - Response
    PaymentResponse:
      type: object
      description: 'It conveys Information related to the Payment transaction processed
        by the POI System.

        Content of the Payment Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: 'Data related to the Sale System.

            Copy.'
        POIData:
          $ref: '#/components/schemas/POIData'
          description: Data related to the POI System.
        PaymentResult:
          $ref: '#/components/schemas/PaymentResult'
          description: 'Data related to the result of a processed payment transaction.

            If one data element is present.'
        LoyaltyResult:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyResult'
          description: 'Data related to the result of a processed loyalty transaction.

            Loyalty cards used with the payment transaction.'
        PaymentReceipt:
          type: array
          items:
            $ref: '#/components/schemas/PaymentReceipt'
          description: Customer or Merchant payment receipt. If the payment receipts
            are printed by the Sale system and the POI or the Sale does not implement
            the Print exchange (Basic profile).
        CustomerOrder:
          type: array
          items:
            $ref: '#/components/schemas/CustomerOrder'
      required:
      - Response
      - SaleData
      - POIData
    CardAcquisitionResponse:
      type: object
      description: 'It conveys Information related to the payment and loyalty cards
        read and processed by the POI System and entered by the Customer.

        Content of the Card Acquisition Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        POIData:
          $ref: '#/components/schemas/POIData'
          description: Data related to the POI System.
        PaymentBrand:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: 'Type of payment card.

              Brands available for payment by the card and not chosen by the Customer.'
          description: 'Type of payment card.

            Brands available for payment by the card and not chosen by the Customer.'
        PaymentInstrumentData:
          $ref: '#/components/schemas/PaymentInstrumentData'
          description: 'Data related to the instrument of payment for the transaction.

            If this type of payment card is configured to send information if the
            CardAcquisition response.'
        LoyaltyAccount:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyAccount'
          description: Data related to the loyalty System.
      required:
      - Response
      - SaleData
      - POIData
    LoyaltyResponse:
      type: object
      description: 'It conveys Information related to the Loyalty transaction processed
        by the POI System.

        Content of the Loyalty Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        POIData:
          $ref: '#/components/schemas/POIData'
          description: Data related to the POI System.
        LoyaltyResult:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyResult'
          description: 'Data related to the result of a processed loyalty transaction.

            If loyalty account identified.'
        PaymentReceipt:
          type: array
          items:
            $ref: '#/components/schemas/PaymentReceipt'
      required:
      - Response
      - SaleData
      - POIData
    StoredValueResponse:
      type: object
      description: 'It conveys Information related to the Stored Value transaction
        processed by the POI System.

        Content of the Stored Value Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        SaleData:
          $ref: '#/components/schemas/SaleData'
          description: Data related to the Sale System.
        POIData:
          $ref: '#/components/schemas/POIData'
          description: Data related to the POI System.
        StoredValueResult:
          type: array
          items:
            $ref: '#/components/schemas/StoredValueResult'
          description: 'Result of loading/reloading a stored value card..

            If StoredValueResponse.Result is Success or Partial, one entry per StoredValueRequest.StoredValueData
            loaded or activated.'
        PaymentReceipt:
          type: array
          items:
            $ref: '#/components/schemas/PaymentReceipt'
      required:
      - Response
      - SaleData
      - POIData
    ReversalResponse:
      type: object
      description: 'It conveys Information related to the reversal processed by the
        POI System.

        Content of the Reversal Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        POIData:
          $ref: '#/components/schemas/POIData'
          description: 'Data related to the POI System.

            If Result is Success.'
        OriginalPOITransaction:
          $ref: '#/components/schemas/OriginalPOITransaction'
        ReversedAmount:
          type: number
          maximum: 99999999.999999
          minimum: 0.0
          description: 'Amount of the payment or loyalty to reverse..

            Copy.'
        CustomerOrder:
          type: array
          items:
            $ref: '#/components/schemas/CustomerOrder'
        PaymentReceipt:
          type: array
          items:
            $ref: '#/components/schemas/PaymentReceipt'
      required:
      - Response
    ReconciliationResponse:
      type: object
      description: 'It conveys Information related to the Reconciliation transaction
        processed by the POI System.

        Content of the Reconciliation Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        ReconciliationType:
          $ref: '#/components/schemas/ReconciliationType'
          description: 'Type of Reconciliation requested by the Sale to the POI.

            Possible values:

            * **AcquirerReconciliation**

            * **AcquirerSynchronisation**

            * **PreviousReconciliation**

            * **SaleReconciliation**'
        POIReconciliationID:
          type: integer
          description: 'Identification of the reconciliation period between Sale and
            POI.

            Absent if ReconciliationType is `AcquirerReconciliation`.'
        TransactionTotals:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTotals'
          description: 'Result of the Sale to POI Reconciliation processing.

            If `Response.Result` is Success.'
      required:
      - Response
      - ReconciliationType
    GetTotalsResponse:
      type: object
      description: 'Content of the Reconciliation Response message.

        It conveys Information related to the Reconciliation transaction processed
        by the POI System.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        POIReconciliationID:
          type: integer
          description: Identification of the reconciliation period between Sale and
            POI.
        TransactionTotals:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTotals'
          description: 'Result of the Sale to POI Reconciliation processing.

            If `Response.Result` is Success.'
      required:
      - Response
      - POIReconciliationID
    BalanceInquiryResponse:
      type: object
      description: 'Content of the Balance Inquiry Response message.

        It conveys the balance and the identification of the associated payment, loyalty
        or stored value account.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        PaymentAccountStatus:
          $ref: '#/components/schemas/PaymentAccountStatus'
          description: 'Data related to the result of a Balance Inquiry request.

            If BalanceInquiryRequest. PaymentAccount present.'
        LoyaltyAccountStatus:
          $ref: '#/components/schemas/LoyaltyAccountStatus'
          description: 'Data related to the result of a loyalty Balance Inquiry.

            If BalanceInquiryRequest. LoyaltyData present.'
        PaymentReceipt:
          type: array
          items:
            $ref: '#/components/schemas/PaymentReceipt'
      required:
      - Response
    CardReaderAPDUResponse:
      type: object
      description: 'Content of the Card Reader APDU Response message.

        It contains the result of the requested service, APDU response sent by the
        chip of the card in response to the APDU request.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        APDUData:
          type: string
          format: byte
          pattern: ^.+$
          description: Data field of the APDU command (Lc + Data).
        CardStatusWords:
          type: string
          format: byte
          pattern: ^.{2,2}$
          description: Status of a smartcard response to a command (SW1-SW2).
      required:
      - Response
      - CardStatusWords
    TransactionStatusResponse:
      type: object
      description: 'Content of the TransactionStatus Response message.

        It conveys Information related to the status of the last or current Payment,
        Loyalty or Reversal transaction.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        MessageReference:
          $ref: '#/components/schemas/MessageReference'
          description: 'Identification of a previous POI transaction.

            If `Response.Result` is Success.'
        RepeatedMessageResponse:
          $ref: '#/components/schemas/RepeatedMessageResponse'
          description: 'Content of the requested Message Response.

            If Result is Success (process completed).'
      required:
      - Response
    AbortResponse:
      type: object
      description: A successful `AbortRequest` returns a response with a **200 OK**
        HTTP status code and no body.
      properties: {}
    DiagnosisResponse:
      type: object
      description: 'It conveys the result of the requested diagnosis and a possible
        message to display on a logical device.

        Content of the Diagnosis Response message.'
      properties:
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
        LoggedSaleID:
          type: array
          items:
            type: string
            pattern: ^.+$
            description: 'Sale Terminal logged to.

              If Sale Terminal logged to this POI Terminal.'
          description: 'Sale Terminal logged to.

            If Sale Terminal logged to this POI Terminal.'
        POIStatus:
          $ref: '#/components/schemas/POIStatus'
          description: 'State of a POI Terminal.

            If `Response.Result` is Success.'
        HostStatus:
          type: array
          items:
            $ref: '#/components/schemas/HostStatus'
          description: State of a Host.
      required:
      - Response
    DisplayResponse:
      type: object
      description: 'It conveys the result of the display, parallel to the message
        request, except if response not required and absent.

        Content of the Display Response message.'
      properties:
        OutputResult:
          type: array
          items:
            $ref: '#/components/schemas/OutputResult'
          description: 'Information related to the result the output (display, print,
            input).

            One per DisplayOutput item of the request, and in the same order.'
      required:
      - OutputResult
    InputResponse:
      type: object
      description: 'It conveys the result of the input or the result of the outputs,
        parallel to the message request, except if response not required and absent.

        Content of the Input Response message.'
      properties:
        OutputResult:
          $ref: '#/components/schemas/OutputResult'
          description: 'Information related to the result the output (display, print,
            input).

            If DisplayOutput present in the request.'
        InputResult:
          $ref: '#/components/schemas/InputResult'
          description: Contains the result and the content of the input.
      required:
      - InputResult
    PrintResponse:
      type: object
      description: 'It conveys the result of the print, parallel to the message request,
        except if response not required and absent.

        Content of the Print Response message.'
      properties:
        DocumentQualifier:
          $ref: '#/components/schemas/DocumentQualifier'
          description: 'Qualification of the document to print to the Cashier or the
            Customer. Allows the manager of the printer, Sale or POI Terminal, to
            send information to a physical printer or to use the paper type accordingly.

            Possible values:

            * **CashierReceipt**

            * **CustomerReceipt**

            * **Document**

            * **Journal**

            * **SaleReceipt**

            * **Voucher**'
        Response:
          $ref: '#/components/schemas/Response'
          description: Result of a message request processing.
      required:
      - DocumentQualifier
      - Response
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: X-API-Key
      type: apiKey
    BasicAuth:
      scheme: basic
      type: http
