openapi: 3.0.0
info:
  title: >-
    Transaction Requests related parts of Open API for FSP Interoperability
    (FSPIOP) (Implementation Friendly Version)
  version: "1.0-oas3"
  description: >-
    Based on API Definition.docx updated on 2018-03-13 Version 1.0. Note - The
    API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP
    header.
  license:
    name: >-
      Open API for FSP Interoperability (FSPIOP) (Implementation Friendly
      Version)
paths:
  /health:
    get:
      tags:
        - health
        - sampled
      responses:
        '200':
          $ref: '#/components/responses/ResponseHealth200'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '405':
          $ref: '#/components/responses/ErrorResponse405'
        '406':
          $ref: '#/components/responses/ErrorResponse406'
        '501':
          $ref: '#/components/responses/ErrorResponse501'
        '503':
          $ref: '#/components/responses/ErrorResponse503'
      operationId: HealthGet
      summary: Get Server
      description: >-
        The HTTP request GET /health is used to return the current status of the
        API.
  /fakeHealth:
    get:
      tags:
        - fakeHealth
      responses:
        '200':
          $ref: '#/components/responses/ResponseHealth200'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '405':
          $ref: '#/components/responses/ErrorResponse405'
        '406':
          $ref: '#/components/responses/ErrorResponse406'
        '501':
          $ref: '#/components/responses/ErrorResponse501'
        '503':
          $ref: '#/components/responses/ErrorResponse503'
      operationId: FakeHealth
      summary: FakeHealth Server
      description: >-
        The HTTP request GET /FakeHealth is used to return the current status of the
        API.
  /transactionRequests:
    post:
      tags:
        - 'transactionRequests'
        - 'sampled'
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/Content-Length'
        - $ref: '#/components/parameters/Content-Type'
        - $ref: '#/components/parameters/Date'
        - $ref: '#/components/parameters/X-Forwarded-For'
        - $ref: '#/components/parameters/FSPIOP-Source'
        - $ref: '#/components/parameters/FSPIOP-Destination'
        - $ref: '#/components/parameters/FSPIOP-Encryption'
        - $ref: '#/components/parameters/FSPIOP-Signature'
        - $ref: '#/components/parameters/FSPIOP-URI'
        - $ref: '#/components/parameters/FSPIOP-HTTP-Method'
      responses:
        '202':
          $ref: '#/components/responses/Response202'
        '400':
          $ref: '#/components/responses/ErrorResponse400'
        '401':
          $ref: '#/components/responses/ErrorResponse401'
        '403':
          $ref: '#/components/responses/ErrorResponse403'
        '404':
          $ref: '#/components/responses/ErrorResponse404'
        '405':
          $ref: '#/components/responses/ErrorResponse405'
        '406':
          $ref: '#/components/responses/ErrorResponse406'
        '501':
          $ref: '#/components/responses/ErrorResponse501'
        '503':
          $ref: '#/components/responses/ErrorResponse503'
      operationId: TransactionRequests
      summary: TransactionRequests
      description: >-
        The HTTP request POST /transactionRequests is used to request the
        creation of a transaction request for the provided financial transaction
        in the server.
      x-examples:
        application/json:
          “transactionRequestId”: “b51ec534-ee48-4575-b6a9-ead2955b8069”
          “payee”:
            partyIdInfo:
              “partyIdType”: “PERSONAL_ID”
              “partyIdentifier”: “16135551212”
              “partySubIdOrType”: “DRIVING_LICENSE”
              “fspId”: “1234”
            merchantClassificationCode: '4321'
            “name”: “Justin Trudeau”
            “personalInfo”:
              “complexName”:
                “firstName”: “Justin”
                “middleName”: “Pierre”
                “lastName”: “Trudeau”
              “dateOfBirth”: “1971-12-25”
          “payer”:
            “partyIdType”: “PERSONAL_ID”
            “partyIdentifier”: “16135551212”
            “partySubIdOrType”: “DRIVING_LICENSE”
            “fspId”: “1234”
          “amount”:
            “currency”: “USD”
            “amount”: “123.45”
          “transactionType”:
            “scenario”: “DEPOSIT”
            “subScenario”: “locally defined sub-scenario”
            “initiator”: “PAYEE”
            “initiatorType”: “CONSUMER”
            “refundInfo”:
              “originalTransactionId”: “b51ec534-ee48-4575-b6a9-ead2955b8069”
              “refundReason”: “free text indicating reason for the refund”
            “balanceOfPayments”: “123”
          “note”: “Free-text memo”
          “geoCode”:
            “latitude”: “+45.4215”
            “longitude”: “+75.6972”
          “authenticationType”: “OTP”
          “expiration”: '“2016-05-24T08:38:08.699-04:00”'
          extensionList:
            extension:
              - “key”: “errorDescription”
                “value”: “This is a more detailed error description”
              - “key”: “errorDescription”
                “value”: “This is a more detailed error description”
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequestsPostRequest'
        required: true
servers:
  - url: /
components:
  parameters:
    Accept:
      name: accept
      description: >-
        The Accept header field indicates the version of the API the client
        would like the server to use.
      in: header
      required: true
      schema:
        type: string
    Content-Length:
      name: content-length
      description: >-
        The Content-Length header field indicates the anticipated size of the
        payload body. Only sent if there is a body. Note - The API supports a
        maximum size of 5242880 bytes (5 Megabytes)
      in: header
      required: false
      schema:
        type: number
    Content-Type:
      name: content-type
      description: >-
        The Content-Type header indicates the specific version of the API used
        to send the payload body.
      in: header
      required: true
      schema:
        type: string
    Date:
      name: date
      description: The Date header field indicates the date when the request was sent.
      in: header
      required: true
      schema:
        type: string
    X-Forwarded-For:
      name: x-forwarded-for
      description: >-
        The X-Forwarded-For header field is an unofficially accepted standard
        used for informational purposes of the originating client IP address, as
        a request might pass multiple proxies, firewalls, and so on. Multiple
        X-Forwarded-For values as in the example shown here should be expected
        and supported by implementers of the API. Note - An alternative to
        X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239
        is less-used and supported than X-Forwarded-For.
      in: header
      required: false
      schema:
        type: string
    FSPIOP-Source:
      name: fspiop-source
      description: >-
        The FSPIOP-Source header field is a non-HTTP standard field used by the
        API for identifying the sender of the HTTP request. The field should be
        set by the original sender of the request. Required for routing and
        signature verification (see header field FSPIOP-Signature).
      in: header
      required: true
      schema:
        type: string
    FSPIOP-Destination:
      name: fspiop-destination
      description: >-
        The FSPIOP-Destination header field is a non-HTTP standard field used by
        the API for HTTP header based routing of requests and responses to the
        destination. The field should be set by the original sender of the
        request (if known), so that any entities between the client and the
        server do not need to parse the payload for routing purposes.
      in: header
      required: false
      schema:
        type: string
    FSPIOP-Encryption:
      name: fspiop-encryption
      description: >-
        The FSPIOP-Encryption header field is a non-HTTP standard field used by
        the API for applying end-to-end encryption of the request.
      in: header
      required: false
      schema:
        type: string
    FSPIOP-Signature:
      name: fspiop-signature
      description: >-
        The FSPIOP-Signature header field is a non-HTTP standard field used by
        the API for applying an end-to-end request signature.
      in: header
      required: false
      schema:
        type: string
    FSPIOP-URI:
      name: fspiop-uri
      description: >-
        The FSPIOP-URI header field is a non-HTTP standard field used by the API
        for signature verification, should contain the service URI. Required if
        signature verification is used, for more information see API Signature
        document.
      in: header
      required: false
      schema:
        type: string
    FSPIOP-HTTP-Method:
      name: fspiop-http-method
      description: >-
        The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by
        the API for signature verification, should contain the service HTTP
        method. Required if signature verification is used, for more information
        see API Signature document.
      in: header
      required: false
      schema:
        type: string
    ID:
      name: ID
      in: path
      required: true
      schema:
        type: string
    Type:
      name: Type
      in: path
      required: true
      schema:
        type: string
    SubId:
      name: SubId
      in: path
      required: true
      schema:
        type: string
  responses:
    ResponseHealth200:
      description: OK
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    Response200:
      description: OK
    Response202:
      description: Accepted
    ErrorResponse400:
      description: >-
        Bad Request - The application cannot process the request; for example,
        due to malformed syntax or the payload exceeded size restrictions.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse401:
      description: >-
        Unauthorized - The request requires authentication in order to be
        processed.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse403:
      description: Forbidden - The request was denied and will be denied in the future.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse404:
      description: Not Found - The resource specified in the URI was not found.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse405:
      description: >-
        Method Not Allowed - An unsupported HTTP method for the request was
        used.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse406:
      description: >-
        Not acceptable - The server is not capable of generating content
        according to the Accept headers sent in the request. Used in the API to
        indicate that the server does not support the version that the client is
        requesting.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse501:
      description: >-
        Not Implemented - The server does not support the requested service. The
        client should not retry.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
    ErrorResponse503:
      description: >-
        Service Unavailable - The server is currently unavailable to accept any
        new service requests. This should be a temporary state, and the client
        should retry within a reasonable time frame.
      headers:
        Content-Length:
          description: >-
            The Content-Length header field indicates the anticipated size of
            the payload body. Only sent if there is a body.
          schema:
            type: integer
        Content-Type:
          description: >-
            The Content-Type header indicates the specific version of the API
            used to send the payload body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
  requestBodies:
    ErrorInformationObject:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationObject'
      required: true
  schemas:
    Amount:
      title: Amount
      description: >-
        The API data type Amount is a JSON String in a canonical format that is
        restricted by a regular expression for interoperability reasons. This
        pattern does not allow any trailing zeroes at all, but allows an amount
        without a minor currency unit. It also only allows four digits in the
        minor currency unit; a negative value is not allowed. Using more than 18
        digits in the major currency unit is not allowed.
      pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$'
      type: string
    AmountType:
      title: AmountType
      description: >-
        Below are the allowed values for the enumeration AmountType - SEND
        Amount the Payer would like to send, that is, the amount that should be
        withdrawn from the Payer account including any fees. - RECEIVE Amount
        the Payer would like the Payee to receive, that is, the amount that
        should be sent to the receiver exclusive fees.
      enum:
        - SEND
        - RECEIVE
      type: string
    AuthenticationType:
      title: AuthenticationTypeEnum
      description: >-
        Below are the allowed values for the enumeration AuthenticationType. -
        OTP One-time password generated by the Payer FSP. - QRCODE QR code used
        as One Time Password.
      enum:
        - OTP
        - QRCODE
      type: string
    AuthenticationValue:
      title: AuthenticationValue
      description: >-
        Contains the authentication value. The format depends on the
        authentication type used in the AuthenticationInfo complex type.
      pattern: '^\d{3,10}$|^\S{1,64}$'
      type: string
    AuthorizationResponse:
      title: AuthorizationResponse
      description: >-
        Below are the allowed values for the enumeration - ENTERED Consumer
        entered the authentication value. - REJECTED Consumer rejected the
        transaction. - RESEND Consumer requested to resend the authentication
        value.
      enum:
        - ENTERED
        - REJECTED
        - RESEND
      type: string
    BalanceOfPayments:
      title: BalanceOfPayments
      description: >-
        (BopCode) The API data type BopCode is a JSON String of 3 characters,
        consisting of digits only. Negative numbers are not allowed. A leading
        zero is not allowed. https://www.imf.org/external/np/sta/bopcode/
      pattern: '^[1-9]\d{2}$'
      type: string
    BinaryString:
      description: >-
        The API data type BinaryString is a JSON String. The string is a
        base64url  encoding of a string of raw bytes, where padding (character
        ‘=’) is added at the end of the data if needed to ensure that the string
        is a multiple of 4 characters. The length restriction indicates the
        allowed number of characters.
      pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
      type: string
    BinaryString32:
      description: >-
        The API data type BinaryString32 is a fixed size version of the API data
        type BinaryString, where the raw underlying data is always of 32 bytes.
        The data type BinaryString32 should not use a padding character as the
        size of the underlying data is fixed.
      pattern: '^[A-Za-z0-9-_]{43}$'
      type: string
    BulkTransferState:
      title: BulkTransactionStateEnum
      description: >-
        Below are the allowed values for the enumeration - RECEIVED Payee FSP
        has received the bulk transfer from the Payer FSP. - PENDING Payee FSP
        has validated the bulk transfer. - ACCEPTED Payee FSP has accepted to
        process the bulk transfer. - PROCESSING Payee FSP has started to
        transfer fund to the Payees. - COMPLETED Payee FSP has completed
        transfer of funds to the Payees. - REJECTED Payee FSP has rejected to
        process the bulk transfer.
      enum:
        - RECEIVED
        - PENDING
        - ACCEPTED
        - PROCESSING
        - COMPLETED
        - REJECTED
      type: string
    Code:
      title: Code
      description: Any code/token returned by the Payee FSP (TokenCode Type).
      pattern: '^[0-9a-zA-Z]{4,32}$'
      type: string
    CorrelationId:
      title: CorrelationId
      description: >-
        Identifier that correlates all messages of the same sequence. The API
        data type UUID (Universally Unique Identifier) is a JSON String in
        canonical format, conforming to RFC 4122, that is restricted by a
        regular expression for interoperability reasons. An UUID is always 36
        characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).
      pattern: >-
        ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    Currency:
      title: CurrencyEnum
      description: >-
        The currency codes defined in ISO 4217 as three-letter alphabetic codes
        are used as the standard naming representation for currencies.
      maxLength: 3
      minLength: 3
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLP
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GGP
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - IMP
        - INR
        - IQD
        - IRR
        - ISK
        - JEP
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRO
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLL
        - SOS
        - SPL
        - SRD
        - STD
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TVD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VND
        - VUV
        - WST
        - XAF
        - XCD
        - XDR
        - XOF
        - XPF
        - YER
        - ZAR
        - ZMW
        - ZWD
      type: string
    Date:
      title: Date
      description: >-
        The API data type Date is a JSON String in a lexical format that is
        restricted by a regular expression for interoperability reasons. This
        format, as specified in ISO 8601, contains a date only. A more readable
        version of the format is yyyy-MM-dd. Examples - "1982-05-23",
        "1987-08-05”
      pattern: >-
        ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
      type: string
    DateOfBirth:
      title: DateofBirth (type Date)
      description: Date of Birth of the Party.
      pattern: >-
        ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
      type: string
    DateTime:
      title: DateTime
      description: >-
        The API data type DateTime is a JSON String in a lexical format that is
        restricted by a regular expression for interoperability reasons. The
        format is according to ISO 8601, expressed in a combined date, time and
        time zone format. A more readable version of the format is
        yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples -
        "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z
        indicates Zulu time zone, same as UTC).
      pattern: >-
        ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
      type: string
    ErrorCode:
      title: ErrorCode
      description: >-
        The API data type ErrorCode is a JSON String of four characters,
        consisting of digits only. Negative numbers are not allowed. A leading
        zero is not allowed. Each error code in the API is a four-digit number,
        for example, 1234, where the first number (1 in the example) represents
        the high-level error category, the second number (2 in the example)
        represents the low-level error category, and the last two numbers (34 in
        the example) represents the specific error.
      pattern: '^[1-9]\d{3}$'
      type: string
    ErrorDescription:
      title: ErrorDescription
      description: Error description string.
      maxLength: 128
      minLength: 1
      type: string
    ExtensionKey:
      title: ExtensionKey
      description: Extension key.
      maxLength: 32
      minLength: 1
      type: string
    ExtensionValue:
      title: ExtensionValue
      description: Extension value.
      maxLength: 128
      minLength: 1
      type: string
    FirstName:
      title: FirstName
      description: First name of the Party (Name Type).
      maxLength: 128
      minLength: 1
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      type: string
    FspId:
      title: FspId
      description: FSP identifier.
      maxLength: 32
      minLength: 1
      type: string
    IlpCondition:
      title: IlpCondition
      description: Condition that must be attached to the transfer by the Payer.
      maxLength: 48
      pattern: '^[A-Za-z0-9-_]{43}$'
      type: string
    IlpFulfilment:
      title: IlpFulfilment
      description: Fulfilment that must be attached to the transfer by the Payee.
      maxLength: 48
      pattern: '^[A-Za-z0-9-_]{43}$'
      type: string
    IlpPacket:
      title: IlpPacket
      description: Information for recipient (transport layer information).
      maxLength: 32768
      minLength: 1
      pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
      type: string
    Integer:
      title: Integer
      description: >-
        The API data type Integer is a JSON String consisting of digits only.
        Negative numbers and leading zeroes are not allowed. The data type is
        always limited to a specific number of digits.
      pattern: '^[1-9]\d*$'
      type: string
    LastName:
      title: LastName
      description: Last name of the Party (Name Type).
      maxLength: 128
      minLength: 1
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      type: string
    Latitude:
      title: Latitude
      description: >-
        The API data type Latitude is a JSON String in a lexical format that is
        restricted by a regular expression for interoperability reasons.
      pattern: >-
        ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
      type: string
    Longitude:
      title: Longitude
      description: >-
        The API data type Longitude is a JSON String in a lexical format that is
        restricted by a regular expression for interoperability reasons.
      pattern: >-
        ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
      type: string
    MerchantClassificationCode:
      title: MerchantClassificationCode
      description: >-
        A limited set of pre-defined numbers. This list would be a limited set
        of numbers identifying a set of popular merchant types like School Fees,
        Pubs and Restaurants, Groceries, etc.
      pattern: '^[\d]{1,4}$'
      type: string
    MiddleName:
      title: MiddleName
      description: Middle name of the Party (Name Type).
      maxLength: 128
      minLength: 1
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      type: string
    Name:
      title: Name
      description: >-
        The API data type Name is a JSON String, restricted by a regular
        expression to avoid characters which are generally not used in a name.
        Regular Expression - The regular expression for restricting the Name
        type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a
        string consisting of whitespace only, all Unicode characters are
        allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,)
        and space characters ( ). Note -  In some programming languages, Unicode
        support must be specifically enabled. For example, if Java is used the
        flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode
        characters.
      pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
      type: string
    Note:
      title: Note
      description: Memo assigned to transaction
      maxLength: 128
      minLength: 1
      type: string
    OtpValue:
      title: OtpValue
      description: >-
        The API data type OtpValue is a JSON String of 3 to 10 characters,
        consisting of digits only. Negative numbers are not allowed. One or more
        leading zeros are allowed.
      pattern: '^\d{3,10}$'
      type: string
    PartyIdentifier:
      title: PartyIdentifier
      description: Identifier of the Party.
      maxLength: 128
      minLength: 1
      type: string
    PartyIdType:
      title: PartyIdTypeEnum
      description: >-
        Below are the allowed values for the enumeration - MSISDN An MSISDN
        (Mobile Station International Subscriber Directory Number, that is, the
        phone number) is used as reference to a participant. The MSISDN
        identifier should be in international format according to the ITU-T
        E.164 standard. Optionally, the MSISDN may be prefixed by a single plus
        sign, indicating the international prefix. - EMAIL An email is used as
        reference to a participant. The format of the email should be according
        to the informational RFC 3696. - PERSONAL_ID A personal identifier is
        used as reference to a participant. Examples of personal identification
        are passport number, birth certificate number, and national registration
        number. The identifier number is added in the PartyIdentifier element.
        The personal identifier type is added in the PartySubIdOrType element. -
        BUSINESS A specific Business (for example, an organization or a company)
        is used as reference to a participant. The BUSINESS identifier can be in
        any format. To make a transaction connected to a specific username or
        bill number in a Business, the PartySubIdOrType element should be used.
        - DEVICE A specific device (for example, a POS or ATM) ID connected to a
        specific business or organization is used as reference to a Party. For
        referencing a specific device under a specific business or organization,
        use the PartySubIdOrType element. - ACCOUNT_ID A bank account number or
        FSP account ID should be used as reference to a participant. The
        ACCOUNT_ID identifier can be in any format, as formats can greatly
        differ depending on country and FSP. - IBAN A bank account number or FSP
        account ID is used as reference to a participant. The IBAN identifier
        can consist of up to 34 alphanumeric characters and should be entered
        without whitespace. - ALIAS An alias is used as reference to a
        participant. The alias should be created in the FSP as an alternative
        reference to an account owner. Another example of an alias is a username
        in the FSP system. The ALIAS identifier can be in any format. It is also
        possible to use the PartySubIdOrType element for identifying an account
        under an Alias defined by the PartyIdentifier.
      enum:
        - MSISDN
        - EMAIL
        - PERSONAL_ID
        - BUSINESS
        - DEVICE
        - ACCOUNT_ID
        - IBAN
        - ALIAS
        - CONSENT
        - THIRD_PARTY_LINK
      type: string
    PartyName:
      title: PartyName
      description: Name of the Party. Could be a real name or a nickname.
      maxLength: 128
      minLength: 1
      type: string
    PartySubIdOrType:
      title: PartySubIdOrType
      description: >-
        Either a sub-identifier of a PartyIdentifier, or a sub-type of the
        PartyIdType, normally a PersonalIdentifierType.
      maxLength: 128
      minLength: 1
      type: string
    PersonalIdentifierType:
      title: PersonalIdentifierType
      description: >-
        Below are the allowed values for the enumeration - PASSPORT A passport
        number is used as reference to a Party. - NATIONAL_REGISTRATION A
        national registration number is used as reference to a Party. -
        DRIVING_LICENSE A driving license is used as reference to a Party. -
        ALIEN_REGISTRATION An alien registration number is used as reference to
        a Party. - NATIONAL_ID_CARD A national ID card number is used as
        reference to a Party. - EMPLOYER_ID A tax identification number is used
        as reference to a Party. - TAX_ID_NUMBER A tax identification number is
        used as reference to a Party. - SENIOR_CITIZENS_CARD A senior citizens
        card number is used as reference to a Party. - MARRIAGE_CERTIFICATE A
        marriage certificate number is used as reference to a Party. -
        HEALTH_CARD A health card number is used as reference to a Party. -
        VOTERS_ID A voter’s identification number is used as reference to a
        Party. - UNITED_NATIONS An UN (United Nations) number is used as
        reference to a Party. - OTHER_ID Any other type of identification type
        number is used as reference to a Party.
      enum:
        - PASSPORT
        - NATIONAL_REGISTRATION
        - DRIVING_LICENSE
        - ALIEN_REGISTRATION
        - NATIONAL_ID_CARD
        - EMPLOYER_ID
        - TAX_ID_NUMBER
        - SENIOR_CITIZENS_CARD
        - MARRIAGE_CERTIFICATE
        - HEALTH_CARD
        - VOTERS_ID
        - UNITED_NATIONS
        - OTHER_ID
      type: string
    QRCODE:
      title: QRCODE
      description: QR code used as One Time Password.
      maxLength: 64
      minLength: 1
      type: string
    RefundReason:
      title: RefundReason
      description: Reason for the refund.
      maxLength: 128
      minLength: 1
      type: string
    TokenCode:
      title: TokenCode
      description: >-
        The API data type TokenCode is a JSON String between 4 and 32
        characters, consisting of digits or upper or lowercase characters from a
        to z.
      pattern: '^[0-9a-zA-Z]{4,32}$'
      type: string
    TransactionInitiator:
      title: TransactionInitiatorEnum
      description: >-
        Below are the allowed values for the enumeration - PAYER Sender of funds
        is initiating the transaction. The account to send from is either owned
        by the Payer or is connected to the Payer in some way. - PAYEE Recipient
        of the funds is initiating the transaction by sending a transaction
        request. The Payer must approve the transaction, either automatically by
        a pre-generated OTP or by pre-approval of the Payee, or by manually
        approving in his or her own Device.
      enum:
        - PAYER
        - PAYEE
      type: string
    TransactionInitiatorType:
      title: TransactionInitiatorTypeEnum
      description: >-
        Below are the allowed values for the enumeration - CONSUMER Consumer is
        the initiator of the transaction. - AGENT Agent is the initiator of the
        transaction. - BUSINESS Business is the initiator of the transaction. -
        DEVICE Device is the initiator of the transaction.
      enum:
        - CONSUMER
        - AGENT
        - BUSINESS
        - DEVICE
      type: string
    TransactionRequestState:
      title: TransactionRequestStateEnum
      description: >-
        Below are the allowed values for the enumeration - RECEIVED Payer FSP
        has received the transaction from the Payee FSP. - PENDING Payer FSP has
        sent the transaction request to the Payer. - ACCEPTED Payer has approved
        the transaction. - REJECTED Payer has rejected the transaction.
      enum:
        - RECEIVED
        - PENDING
        - ACCEPTED
        - REJECTED
      type: string
    TransactionScenario:
      title: TransactionScenarioEnum
      description: >-
        Below are the allowed values for the enumeration - DEPOSIT Used for
        performing a Cash-In (deposit) transaction. In a normal scenario,
        electronic funds are transferred from a Business account to a Consumer
        account, and physical cash is given from the Consumer to the Business
        User. - WITHDRAWAL Used for performing a Cash-Out (withdrawal)
        transaction. In a normal scenario, electronic funds are transferred from
        a Consumer’s account to a Business account, and physical cash is given
        from the Business User to the Consumer. - TRANSFER Used for performing a
        P2P (Peer to Peer, or Consumer to Consumer) transaction. - PAYMENT
        Usually used for performing a transaction from a Consumer to a Merchant
        or Organization, but could also be for a B2B (Business to Business)
        payment. The transaction could be online for a purchase in an Internet
        store, in a physical store where both the Consumer and Business User are
        present, a bill payment, a donation, and so on. - REFUND Used for
        performing a refund of transaction.
      enum:
        - DEPOSIT
        - WITHDRAWAL
        - TRANSFER
        - PAYMENT
        - REFUND
      type: string
    TransactionState:
      title: TransactionStateEnum
      description: >-
        Below are the allowed values for the enumeration - RECEIVED Payee FSP
        has received the transaction from the Payer FSP. - PENDING Payee FSP has
        validated the transaction. - COMPLETED Payee FSP has successfully
        performed the transaction. - REJECTED Payee FSP has failed to perform
        the transaction.
      enum:
        - RECEIVED
        - PENDING
        - COMPLETED
        - REJECTED
      type: string
    TransactionSubScenario:
      title: TransactionSubScenario
      description: >-
        Possible sub-scenario, defined locally within the scheme (UndefinedEnum
        Type).
      pattern: '^[A-Z_]{1,32}$'
      type: string
    TransferState:
      title: TransferStateEnum
      description: >-
        Below are the allowed values for the enumeration - RECEIVED Next ledger
        has received the transfer. - RESERVED Next ledger has reserved the
        transfer. - COMMITTED Next ledger has successfully performed the
        transfer. - ABORTED Next ledger has aborted the transfer due a rejection
        or failure to perform the transfer.
      enum:
        - RECEIVED
        - RESERVED
        - COMMITTED
        - ABORTED
      type: string
    UndefinedEnum:
      title: UndefinedEnum
      description: >-
        The API data type UndefinedEnum is a JSON String consisting of 1 to 32
        uppercase characters including an underscore character (_).
      pattern: '^[A-Z_]{1,32}$'
      type: string
    AuthenticationInfo:
      title: AuthenticationInfo
      description: Data model for the complex type AuthenticationInfo
      required:
        - authentication
        - authenticationValue
      type: object
      properties:
        authentication:
          type: string
        authenticationValue:
          type: string
    AuthorizationsIDPutResponse:
      title: AuthorizationsIDPutResponse
      description: 'PUT /authorizations/{ID} object'
      required:
        - responseType
      type: object
      additionalProperties: false
      properties:
        authenticationInfo:
          $ref: '#/components/schemas/AuthenticationInfo'
        responseType:
          description: >-
            Enum containing response information; if the customer entered the
            authentication value, rejected the transaction, or requested a
            resend of the authentication value.
          type: string
    BulkQuotesPostRequest:
      title: BulkQuotesPostRequest
      description: POST /bulkQuotes object
      required:
        - bulkQuoteId
        - payer
        - individualQuotes
      type: object
      additionalProperties: false
      properties:
        bulkQuoteId:
          description: >-
            Common ID between the FSPs for the bulk quote object, decided by the
            Payer FSP. The ID should be reused for resends of the same bulk
            quote. A new ID should be generated for each new bulk quote.
          type: string
        payer:
          $ref: '#/components/schemas/Party'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        expiration:
          description: >-
            Expiration is optional to let the Payee FSP know when a quote no
            longer needs to be returned.
          type: string
        individualQuotes:
          description: List of quotes elements.
          maxItems: 1000
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/IndividualQuote'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    BulkQuotesIDPutResponse:
      title: BulkQuotesIDPutResponse
      description: 'PUT /bulkQuotes/{ID} object'
      required:
        - expiration
      type: object
      additionalProperties: false
      properties:
        individualQuoteResults:
          description: >-
            Fees for each individual transaction, if any of them are charged per
            transaction.
          maxItems: 1000
          type: array
          items:
            $ref: '#/components/schemas/IndividualQuoteResult'
        expiration:
          description: >-
            Date and time until when the quotation is valid and can be honored
            when used in the subsequent transaction request.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    BulkTransfersPostRequest:
      title: BulkTransfersPostRequest
      description: POST /bulkTransfers object
      required:
        - bulkTransferId
        - bulkQuoteId
        - payerFsp
        - payeeFsp
        - individualTransfers
        - expiration
      type: object
      additionalProperties: false
      properties:
        bulkTransferId:
          description: >-
            Common ID between the FSPs and the optional Switch for the bulk
            transfer object, decided by the Payer FSP. The ID should be reused
            for resends of the same bulk transfer. A new ID should be generated
            for each new bulk transfer.
          type: string
        bulkQuoteId:
          description: ID of the related bulk quote.
          type: string
        payerFsp:
          description: Payer FSP identifier.
          type: string
        payeeFsp:
          description: Payee FSP identifier.
          type: string
        individualTransfers:
          description: List of IndividualTransfer elements.
          maxItems: 1000
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/IndividualTransfer'
        expiration:
          description: Expiration time of the transfers.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    BulkTransfersIDPutResponse:
      title: BulkTransfersIDPutResponse
      description: 'PUT /bulkTransfers/{ID} object'
      required:
        - bulkTransferState
      type: object
      additionalProperties: false
      properties:
        completedTimestamp:
          description: Time and date when the bulk transaction was completed.
          type: string
        individualTransferResults:
          description: List of IndividualTransferResult elements.
          maxItems: 1000
          type: array
          items:
            $ref: '#/components/schemas/IndividualTransferResult'
        bulkTransferState:
          description: The state of the bulk transfer.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    ErrorInformation:
      title: ErrorInformation
      description: Data model for the complex type ErrorInformation.
      required:
        - errorCode
        - errorDescription
      type: object
      additionalProperties: false
      properties:
        errorCode:
          description: Specific error number.
          type: string
        errorDescription:
          description: Error description string.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    ErrorInformationObject:
      title: ErrorInformationObject
      description: Data model for the complex type object that contains ErrorInformation.
      additionalProperties: false
      required:
        - errorInformation
      type: object
      properties:
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
    ErrorInformationResponse:
      title: ErrorInformationResponse
      description: >-
        Data model for the complex type object that contains an optional element
        ErrorInformation used along with 4xx and 5xx responses.
      type: object
      additionalProperties: false
      properties:
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
    Extension:
      title: Extension
      description: Data model for the complex type Extension
      required:
        - key
        - value
      type: object
      additionalProperties: false
      properties:
        key:
          description: Extension key.
          type: string
        value:
          description: Extension value.
          type: string
    ExtensionList:
      title: ExtensionList
      description: Data model for the complex type ExtensionList
      required:
        - extension
      type: object
      additionalProperties: false
      properties:
        extension:
          description: Number of Extension elements
          maxItems: 16
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/Extension'
    GeoCode:
      title: GeoCode
      description: >-
        Data model for the complex type GeoCode. Indicates the geographic
        location from where the transaction was initiated.
      required:
        - latitude
        - longitude
      type: object
      additionalProperties: false
      properties:
        latitude:
          description: Latitude of the Party.
          type: string
        longitude:
          description: Longitude of the   Party.
          type: string
    IndividualQuote:
      title: IndividualQuote
      description: Data model for the complex type IndividualQuote.
      required:
        - quoteId
        - transactionId
        - payee
        - amountType
        - amount
        - transactionType
      type: object
      additionalProperties: false
      properties:
        quoteId:
          description: Identifies quote message.
          type: string
        transactionId:
          description: Identifies transaction message.
          type: string
        payee:
          $ref: '#/components/schemas/Party'
        amountType:
          description: 'SEND for sendAmount, RECEIVE for receiveAmount.'
          type: string
        amount:
          $ref: '#/components/schemas/Money'
        fees:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          description: Memo that will be attached to the transaction.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    IndividualQuoteResult:
      title: IndividualQuoteResult
      description: Data model for the complex type IndividualQuoteResult.
      required:
        - quoteId
      type: object
      additionalProperties: false
      properties:
        quoteId:
          description: Identifies quote message.
          type: string
        payee:
          $ref: '#/components/schemas/Party'
        transferAmount:
          $ref: '#/components/schemas/Money'
        payeeReceiveAmount:
          $ref: '#/components/schemas/Money'
        payeeFspFee:
          $ref: '#/components/schemas/Money'
        payeeFspCommission:
          $ref: '#/components/schemas/Money'
        ilpPacket:
          description: The ILP Packet that must be attached to the transfer by the Payer.
          type: string
        condition:
          description: The condition that must be attached to the transfer by the Payer.
          type: string
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    IndividualTransfer:
      title: IndividualTransfer
      description: Data model for the complex type IndividualTransfer.
      required:
        - transferId
        - transferAmount
        - ilpPacket
        - condition
      type: object
      additionalProperties: false
      properties:
        transferId:
          description: Identifies messages related to the same /transfers sequence.
          type: string
        transferAmount:
          $ref: '#/components/schemas/Money'
        ilpPacket:
          description: >-
            ILP Packet containing the amount delivered to the Payee and the ILP
            Address of the Payee and any other end-to-end data.
          type: string
        condition:
          description: Condition that must be fulfilled to commit the transfer.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    IndividualTransferResult:
      title: IndividualTransferResult
      description: Data model for the complex type IndividualTransferResult.
      required:
        - transferId
      type: object
      additionalProperties: false
      properties:
        transferId:
          description: Identifies messages related to the same /transfers sequence.
          type: string
        fulfilment:
          description: >-
            Fulfilment of the condition specified with the transaction. Note -
            Either fulfilment or errorInformation should be set, not both.
          type: string
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    Money:
      title: Money
      description: Data model for the complex type Money.
      required:
        - currency
        - amount
      type: object
      additionalProperties: false
      properties:
        currency:
          description: Currency of the amount.
          type: string
        amount:
          description: Amount of Money.
          type: string
    ParticipantsTypeIDSubIDPostRequest:
      title: ParticipantsTypeIDSubIDPostRequest
      description: 'POST /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object'
      required:
        - fspId
      type: object
      additionalProperties: false
      properties:
        fspId:
          description: FSP Identifier that the Party belongs to.
          type: string
        currency:
          description: Indicate that the provided Currency is supported by the Party.
          type: string
    ParticipantsTypeIDPutResponse:
      title: ParticipantsTypeIDPutResponse
      description: 'PUT /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object'
      type: object
      additionalProperties: false
      properties:
        fspId:
          description: FSP Identifier that the Party belongs to.
          type: string
    ParticipantsIDPutResponse:
      title: ParticipantsIDPutResponse
      description: 'PUT /participants/{ID} object'
      required:
        - partyList
      type: object
      additionalProperties: false
      properties:
        partyList:
          description: >-
            List of PartyResult elements that were either created or failed to
            be created.
          maxItems: 10000
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/PartyResult'
        currency:
          description: >-
            Indicate that the provided Currency was set to be supported by each
            successfully added PartyIdInfo.
          type: string
    ParticipantsPostRequest:
      title: ParticipantsPostRequest
      description: POST /participants object
      required:
        - requestId
        - partyList
      type: object
      additionalProperties: false
      properties:
        requestId:
          description: >-
            The ID of the request, decided by the client. Used for
            identification of the callback from the server.
          type: string
        partyList:
          description: >-
            List of PartyIdInfo elements that the client would like to update or
            create FSP information about.
          maxItems: 10000
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/PartyIdInfo'
        currency:
          description: >-
            Indicate that the provided Currency is supported by each PartyIdInfo
            in the list.
          type: string
    Party:
      title: Party
      description: Data model for the complex type Party.
      required:
        - partyIdInfo
      type: object
      additionalProperties: false
      properties:
        partyIdInfo:
          $ref: '#/components/schemas/PartyIdInfo'
        merchantClassificationCode:
          description: >-
            Used in the context of Payee Information, where the Payee happens to
            be a merchant accepting merchant payments.
          type: string
        name:
          description: 'Display name of the Party, could be a real name or a nick name.'
          type: string
        personalInfo:
          $ref: '#/components/schemas/PartyPersonalInfo'
    PartyComplexName:
      title: PartyComplexName
      description: Data model for the complex type PartyComplexName.
      type: object
      additionalProperties: false
      properties:
        firstName:
          $ref: '#/components/schemas/FirstName'
        middleName:
          $ref: '#/components/schemas/MiddleName'
        lastName:
          $ref: '#/components/schemas/LastName'
    PartyIdInfo:
      title: PartyIdInfo
      description: Data model for the complex type PartyIdInfo.
      required:
        - partyIdType
        - partyIdentifier
      type: object
      additionalProperties: false
      properties:
        partyIdType:
          description: Type of the identifier.
          type: string
        partyIdentifier:
          description: An identifier for the Party.
          type: string
        partySubIdOrType:
          description: A sub-identifier or sub-type for the Party.
          type: string
        fspId:
          description: FSP ID (if known)
          type: string
    PartiesTypeIDPutResponse:
      title: PartiesTypeIDPutResponse
      description: 'PUT /parties/{Type}/{ID} object'
      required:
        - party
      type: object
      additionalProperties: false
      properties:
        party:
          $ref: '#/components/schemas/Party'
    PartyPersonalInfo:
      title: PartyPersonalInfo
      description: Data model for the complex type PartyPersonalInfo.
      type: object
      additionalProperties: false
      properties:
        complexName:
          $ref: '#/components/schemas/PartyComplexName'
        dateOfBirth:
          description: Date of birth for the Party.
          type: string
    PartyResult:
      title: PartyResult
      description: Data model for the complex type PartyResult.
      required:
        - partyId
      type: object
      additionalProperties: false
      properties:
        partyId:
          $ref: '#/components/schemas/PartyIdInfo'
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
    QuotesPostRequest:
      title: QuotesPostRequest
      description: POST /quotes object
      required:
        - quoteId
        - transactionId
        - payee
        - payer
        - amountType
        - amount
        - transactionType
      type: object
      additionalProperties: false
      properties:
        quoteId:
          description: >-
            Common ID between the FSPs for the quote object, decided by the
            Payer FSP. The ID should be reused for resends of the same quote for
            a transaction. A new ID should be generated for each new quote for a
            transaction.
          type: string
        transactionId:
          description: >-
            Common ID (decided by the Payer FSP) between the FSPs for the future
            transaction object. The actual transaction will be created as part
            of a successful transfer process. The ID should be reused for
            resends of the same quote for a transaction. A new ID should be
            generated for each new quote for a transaction.
          type: string
        transactionRequestId:
          description: Identifies an optional previously-sent transaction request.
          type: string
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/Party'
        amountType:
          description: 'SEND for send amount, RECEIVE for receive amount.'
          type: string
        amount:
          $ref: '#/components/schemas/Money'
        fees:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        note:
          description: A memo that will be attached to the transaction.
          type: string
        expiration:
          description: >-
            Expiration is optional. It can be set to get a quick failure in case
            the peer FSP takes too long to respond. Also, it may be beneficial
            for Consumer, Agent, and Merchant to know that their request has a
            time limit.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    QuotesIDPutResponse:
      title: QuotesIDPutResponse
      description: 'PUT /quotes/{ID} object'
      required:
        - transferAmount
        - expiration
        - ilpPacket
        - condition
      type: object
      additionalProperties: false
      properties:
        transferAmount:
          $ref: '#/components/schemas/Money'
        payeeReceiveAmount:
          $ref: '#/components/schemas/Money'
        payeeFspFee:
          $ref: '#/components/schemas/Money'
        payeeFspCommission:
          $ref: '#/components/schemas/Money'
        expiration:
          description: >-
            Date and time until when the quotation is valid and can be honored
            when used in the subsequent transaction.
          type: string
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        ilpPacket:
          description: The ILP Packet that must be attached to the transfer by the Payer.
          type: string
        condition:
          description: The condition that must be attached to the transfer by the Payer.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    Refund:
      title: Refund
      description: Data model for the complex type Refund.
      required:
        - originalTransactionId
      type: object
      additionalProperties: false
      properties:
        originalTransactionId:
          description: >-
            Reference to the original transaction ID that is requested to be
            refunded.
          type: string
        refundReason:
          description: Free text indicating the reason for the refund.
          type: string
    Status:
      title: Status
      description: Data model for the api status.
      type: object
      additionalProperties: false
      properties:
        status:
          description: 'The return status, usually "OK"'
          type: string
        uptime:
          description: The amount of time in seconds that the server has been up for.
          type: number
        startTime:
          description: The UTC time that the server started up
          type: string
        versionNumber:
          description: Current version of the API
          type: string
        services:
          description: An list of the statuses of services that the API requires
          type: array
          items: {}
    Transaction:
      title: Transaction
      description: >-
        Data model for the complex type Transaction. The Transaction type is
        used to carry end-to-end data between the Payer FSP and the Payee FSP in
        the ILP Packet. Both the transactionId and the quoteId in the data model
        are decided by the Payer FSP in the POST /quotes.
      required:
        - transactionId
        - quoteId
        - payee
        - payer
        - amount
        - transactionType
      type: object
      additionalProperties: false
      properties:
        transactionId:
          description: >-
            ID of the transaction, the ID is decided by the Payer FSP during the
            creation of the quote.
          type: string
        quoteId:
          description: >-
            ID of the quote, the ID is decided by the Payer FSP during the
            creation of the quote.
          type: string
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/Party'
        amount:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          description: 'Memo associated to the transaction, intended to the Payee.'
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    TransactionRequestsIDPutResponse:
      title: TransactionRequestsIDPutResponse
      description: 'PUT /transactionRequests/{ID} object'
      required:
        - transactionRequestState
      type: object
      additionalProperties: false
      properties:
        transactionId:
          description: >-
            Identifies a related transaction (if a transaction has been
            created).
          type: string
        transactionRequestState:
          description: State of the transaction request.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    TransactionsIDPutResponse:
      title: TransactionsIDPutResponse
      description: 'PUT /transactions/{ID} object'
      required:
        - transactionState
      type: object
      additionalProperties: false
      properties:
        completedTimestamp:
          description: Time and date when the transaction was completed.
          type: string
        transactionState:
          description: State of the transaction.
          type: string
        code:
          description: >-
            Optional redemption information provided to Payer after transaction
            has been completed.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    TransactionType:
      title: TransactionType
      description: Data model for the complex type TransactionType.
      required:
        - scenario
        - initiator
        - initiatorType
      type: object
      additionalProperties: false
      properties:
        scenario:
          description: 'Deposit, withdrawal, refund, …'
          type: string
        subScenario:
          description: 'Possible sub-scenario, defined locally within the scheme.'
          type: string
        initiator:
          description: Who is initiating the transaction - Payer or Payee
          type: string
        initiatorType:
          description: 'Consumer, agent, business, …'
          type: string
        refundInfo:
          $ref: '#/components/schemas/Refund'
        balanceOfPayments:
          description: Balance of Payments code.
          type: string
    TransfersPostRequest:
      title: TransfersPostRequest
      description: POST /transfers Request object
      required:
        - transferId
        - payeeFsp
        - payerFsp
        - amount
        - ilpPacket
        - condition
        - expiration
      type: object
      additionalProperties: false
      properties:
        transferId:
          description: >-
            The common ID between the FSPs and the optional Switch for the
            transfer object, decided by the Payer FSP. The ID should be reused
            for resends of the same transfer. A new ID should be generated for
            each new transfer.
          type: string
        payeeFsp:
          description: Payee FSP in the proposed financial transaction.
          type: string
        payerFsp:
          description: Payer FSP in the proposed financial transaction.
          type: string
        amount:
          $ref: '#/components/schemas/Money'
        ilpPacket:
          description: >-
            The ILP Packet containing the amount delivered to the Payee and the
            ILP Address of the Payee and any other end-to-end data.
          type: string
        condition:
          description: The condition that must be fulfilled to commit the transfer.
          type: string
        expiration:
          description: >-
            Expiration can be set to get a quick failure expiration of the
            transfer. The transfer should be rolled back if no fulfilment is
            delivered before this time.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    TransactionRequestsPostRequest:
      title: TransactionRequestsPostRequest
      description: POST /transactionRequests object
      additionalProperties: false
      required:
        - transactionRequestId
        - payee
        - payer
        - amount
        - transactionType
      type: object
      properties:
        transactionRequestId:
          description: >-
            Common ID between the FSPs for the transaction request object,
            decided by the Payee FSP. The ID should be reused for resends of the
            same transaction request. A new ID should be generated for each new
            transaction request.
          type: string
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/PartyIdInfo'
        amount:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          description: 'Reason for the transaction request, intended to the Payer.'
          type: string
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        authenticationType:
          description: 'OTP or QR Code, otherwise empty.'
          type: string
        expiration:
          description: >-
            Can be set to get a quick failure in case the peer FSP takes too
            long to respond. Also, it may be beneficial for Consumer, Agent,
            Merchant to know that their request has a time limit.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
    TransfersIDPutResponse:
      title: TransfersIDPutResponse
      description: 'PUT /transfers/{ID} object'
      additionalProperties: false
      required:
        - transferState
      type: object
      properties:
        fulfilment:
          description: >-
            Fulfilment of the condition specified with the transaction.
            Mandatory if transfer has completed successfully.
          type: string
        completedTimestamp:
          description: Time and date when the transaction was completed.
          type: string
        transferState:
          description: State of the transfer.
          type: string
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
