openapi: 3.0.2
info:
  version: '1.0'
  title: Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version) Snippets
  description: |-
    Based on [API Definition version 1.0](https://github.com/mojaloop/mojaloop-specification/blob/develop/API%20Definition%20v1.0.pdf).
    **Note:** The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header.
  license:
    name: TBD
    url: Yet to be confirmed
servers:
  - url: '{protocol}://hostname:<port>/switch/'
    variables:
      protocol:
        enum:
          - http
          - https
        default: https
components:
  schemas:
    Amount:
      title: Amount
      type: string
      pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$'
      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.'
      example: 123.45
    AmountType:
      title: AmountType
      type: string
      enum:
        - SEND
        - RECEIVE
      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 of any fees.
      example: RECEIVE
    AuthenticationInfo:
      title: AuthenticationInfo
      type: object
      description: Data model for the complex type AuthenticationInfo.
      properties:
        authentication:
          $ref: '#/components/schemas/AuthenticationType'
        authenticationValue:
          $ref: '#/components/schemas/AuthenticationValue'
      required:
        - authentication
        - authenticationValue
    AuthenticationType:
      title: AuthenticationType
      type: string
      enum:
        - OTP
        - QRCODE
      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.
      example: OTP
    AuthenticationValue:
      title: AuthenticationValue
      oneOf:
        - $ref: '#/components/schemas/OtpValue'
        - $ref: '#/components/schemas/QRCODE'
      pattern: '^\d{3,10}$|^\S{1,64}$'
      description: Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type.
      example: 1234
    AuthorizationResponse:
      title: AuthorizationResponse
      type: string
      enum:
        - ENTERED
        - REJECTED
        - RESEND
      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.
      example: ENTERED
    AuthorizationsIDPutResponse:
      title: AuthorizationsIDPutResponse
      type: object
      description: 'The object sent in the PUT /authorizations/{ID} callback.'
      properties:
        authenticationInfo:
          $ref: '#/components/schemas/AuthenticationInfo'
        responseType:
          $ref: '#/components/schemas/AuthorizationResponse'
      required:
        - responseType
    BalanceOfPayments:
      title: BalanceOfPayments
      type: string
      pattern: '^[1-9]\d{2}$'
      description: '(BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed.'
      example: 123
    BinaryString:
      type: string
      pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
      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.'
    BinaryString32:
      type: string
      pattern: '^[A-Za-z0-9-_]{43}$'
      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.'
    BulkQuotesIDPutResponse:
      title: BulkQuotesIDPutResponse
      type: object
      description: 'The object sent in the PUT /bulkQuotes/{ID} callback.'
      properties:
        individualQuoteResults:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/IndividualQuoteResult'
          description: 'Fees for each individual transaction, if any of them are charged per transaction.'
        expiration:
          $ref: '#/components/schemas/DateTime'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - expiration
    BulkQuotesPostRequest:
      title: BulkQuotesPostRequest
      type: object
      description: The object sent in the POST /bulkQuotes request.
      properties:
        bulkQuoteId:
          $ref: '#/components/schemas/CorrelationId'
        payer:
          $ref: '#/components/schemas/Party'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        expiration:
          $ref: '#/components/schemas/DateTime'
        individualQuotes:
          type: array
          items:
            $ref: '#/components/schemas/IndividualQuote'
          minLength: 1
          maxLength: 1000
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - bulkQuoteId
        - payer
        - individualQuotes
    BulkTransfersIDPutResponse:
      title: BulkTransfersIDPutResponse
      type: object
      description: 'The object sent in the PUT /bulkTransfers/{ID} callback.'
      properties:
        completedTimestamp:
          $ref: '#/components/schemas/DateTime'
        individualTransferResults:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/IndividualTransferResult'
          description: List of IndividualTransferResult elements.
        bulkTransferState:
          $ref: '#/components/schemas/BulkTransferState'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - bulkTransferState
    BulkTransfersPostRequest:
      title: BulkTransfersPostRequest
      type: object
      description: The object sent in the POST /bulkTransfers request.
      properties:
        bulkTransferId:
          $ref: '#/components/schemas/CorrelationId'
        bulkQuoteId:
          $ref: '#/components/schemas/CorrelationId'
        payerFsp:
          $ref: '#/components/schemas/FspId'
        payeeFsp:
          $ref: '#/components/schemas/FspId'
        individualTransfers:
          type: array
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/IndividualTransfer'
          description: List of IndividualTransfer elements.
        expiration:
          $ref: '#/components/schemas/DateTime'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - bulkTransferId
        - bulkQuoteId
        - payerFsp
        - payeeFsp
        - individualTransfers
        - expiration
    BulkTransferState:
      title: BulkTransactionState
      type: string
      enum:
        - RECEIVED
        - PENDING
        - ACCEPTED
        - PROCESSING
        - COMPLETED
        - REJECTED
      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.
      example: RECEIVED
    Code:
      title: Code
      type: string
      pattern: '^[0-9a-zA-Z]{4,32}$'
      description: Any code/token returned by the Payee FSP (TokenCode Type).
      example: Test-Code
    CorrelationId:
      title: CorrelationId
      type: string
      pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$'
      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](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).'
      example: b51ec534-ee48-4575-b6a9-ead2955b8069
    Currency:
      title: Currency
      description: 'The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.'
      type: string
      minLength: 3
      maxLength: 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
      example: USD
    Date:
      title: Date
      type: string
      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)$'
      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 are "1982-05-23", "1987-08-05”.
    DateOfBirth:
      title: DateofBirth (type Date)
      type: string
      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)$'
      description: Date of Birth of the Party.
      example: '1966-06-16'
    DateTime:
      title: DateTime
      type: string
      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)$'
      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](https://www.iso.org/iso-8601-date-and-time-format.html), 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 are "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z indicates Zulu time zone, same as UTC).
      example: '2016-05-24T08:38:08.699-04:00'
    ErrorCode:
      title: ErrorCode
      type: string
      pattern: '^[1-9]\d{3}$'
      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) represent the specific error.'
      example: 5100
    ErrorDescription:
      title: ErrorDescription
      type: string
      minLength: 1
      maxLength: 128
      description: Error description string.
      example: This is an error description.
    ErrorInformation:
      title: ErrorInformation
      type: object
      description: Data model for the complex type ErrorInformation.
      properties:
        errorCode:
          $ref: '#/components/schemas/ErrorCode'
        errorDescription:
          $ref: '#/components/schemas/ErrorDescription'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - errorCode
        - errorDescription
    ErrorInformationObject:
      title: ErrorInformationObject
      type: object
      description: Data model for the complex type object that contains ErrorInformation.
      properties:
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
      required:
        - errorInformation
    ErrorInformationResponse:
      title: ErrorInformationResponse
      type: object
      description: Data model for the complex type object that contains an optional element ErrorInformation used along with 4xx and 5xx responses.
      properties:
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
    Extension:
      title: Extension
      type: object
      description: Data model for the complex type Extension.
      properties:
        key:
          $ref: '#/components/schemas/ExtensionKey'
        value:
          $ref: '#/components/schemas/ExtensionValue'
      required:
        - key
        - value
    ExtensionKey:
      title: ExtensionKey
      type: string
      minLength: 1
      maxLength: 32
      description: Extension key.
    ExtensionList:
      title: ExtensionList
      type: object
      description: 'Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.'
      properties:
        extension:
          type: array
          items:
            $ref: '#/components/schemas/Extension'
          minItems: 1
          maxItems: 16
          description: Number of Extension elements.
      required:
        - extension
    ExtensionValue:
      title: ExtensionValue
      type: string
      minLength: 1
      maxLength: 128
      description: Extension value.
    FirstName:
      title: FirstName
      type: string
      minLength: 1
      maxLength: 128
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      description: First name of the Party (Name Type).
      example: Henrik
    FspId:
      title: FspId
      type: string
      minLength: 1
      maxLength: 32
      description: FSP identifier.
      example: 1234
    GeoCode:
      title: GeoCode
      type: object
      description: Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.
      properties:
        latitude:
          $ref: '#/components/schemas/Latitude'
        longitude:
          $ref: '#/components/schemas/Longitude'
      required:
        - latitude
        - longitude
    IlpCondition:
      title: IlpCondition
      type: string
      pattern: '^[A-Za-z0-9-_]{43}$'
      maxLength: 48
      description: Condition that must be attached to the transfer by the Payer.
      example: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA
    IlpFulfilment:
      title: IlpFulfilment
      type: string
      pattern: '^[A-Za-z0-9-_]{43}$'
      maxLength: 48
      description: Fulfilment that must be attached to the transfer by the Payee.
      example: WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8
    IlpPacket:
      title: IlpPacket
      type: string
      pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
      minLength: 1
      maxLength: 32768
      description: Information for recipient (transport layer information).
      example: AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA
    IndividualQuote:
      title: IndividualQuote
      type: object
      description: Data model for the complex type IndividualQuote.
      properties:
        quoteId:
          $ref: '#/components/schemas/CorrelationId'
        transactionId:
          $ref: '#/components/schemas/CorrelationId'
        payee:
          $ref: '#/components/schemas/Party'
        amountType:
          $ref: '#/components/schemas/AmountType'
        amount:
          $ref: '#/components/schemas/Money'
        fees:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          $ref: '#/components/schemas/Note'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - quoteId
        - transactionId
        - payee
        - amountType
        - amount
        - transactionType
    IndividualQuoteResult:
      title: IndividualQuoteResult
      type: object
      description: Data model for the complex type IndividualQuoteResult.
      properties:
        quoteId:
          $ref: '#/components/schemas/CorrelationId'
        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:
          $ref: '#/components/schemas/IlpPacket'
        condition:
          $ref: '#/components/schemas/IlpCondition'
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - quoteId
    IndividualTransfer:
      title: IndividualTransfer
      type: object
      description: Data model for the complex type IndividualTransfer.
      properties:
        transferId:
          $ref: '#/components/schemas/CorrelationId'
        transferAmount:
          $ref: '#/components/schemas/Money'
        ilpPacket:
          $ref: '#/components/schemas/IlpPacket'
        condition:
          $ref: '#/components/schemas/IlpCondition'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transferId
        - transferAmount
        - ilpPacket
        - condition
    IndividualTransferResult:
      title: IndividualTransferResult
      type: object
      description: Data model for the complex type IndividualTransferResult.
      properties:
        transferId:
          $ref: '#/components/schemas/CorrelationId'
        fulfilment:
          $ref: '#/components/schemas/IlpFulfilment'
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transferId
    Integer:
      title: Integer
      type: string
      pattern: '^[1-9]\d*$'
      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.
    LastName:
      title: LastName
      type: string
      minLength: 1
      maxLength: 128
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      description: Last name of the Party (Name Type).
      example: Karlsson
    Latitude:
      title: Latitude
      type: string
      pattern: '^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$'
      description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
      example: '+45.4215'
    Longitude:
      title: Longitude
      type: string
      pattern: '^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$'
      description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
      example: '+75.6972'
    MerchantClassificationCode:
      title: MerchantClassificationCode
      type: string
      pattern: '^[\d]{1,4}$'
      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.'
      example: 4321
    MiddleName:
      title: MiddleName
      type: string
      minLength: 1
      maxLength: 128
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      description: Middle name of the Party (Name Type).
      example: Johannes
    Money:
      title: Money
      type: object
      description: Data model for the complex type Money.
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          $ref: '#/components/schemas/Amount'
      required:
        - currency
        - amount
    Name:
      title: Name
      type: string
      pattern: '^(?!\s*$)[\p{L}\p{Nd} .,''-]{1,128}$'
      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.
    Note:
      title: Note
      type: string
      minLength: 1
      maxLength: 128
      description: Memo assigned to transaction.
      example: Note sent to Payee.
    OtpValue:
      title: OtpValue
      type: string
      pattern: '^\d{3,10}$'
      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.'
    ParticipantsIDPutResponse:
      title: ParticipantsIDPutResponse
      type: object
      description: 'The object sent in the PUT /participants/{ID} callback.'
      properties:
        partyList:
          type: array
          items:
            $ref: '#/components/schemas/PartyResult'
          minItems: 1
          maxItems: 10000
          description: List of PartyResult elements that were either created or failed to be created.
        currency:
          $ref: '#/components/schemas/Currency'
      required:
        - partyList
    ParticipantsPostRequest:
      title: ParticipantsPostRequest
      type: object
      description: The object sent in the POST /participants request.
      properties:
        requestId:
          $ref: '#/components/schemas/CorrelationId'
        partyList:
          type: array
          items:
            $ref: '#/components/schemas/PartyIdInfo'
          minItems: 1
          maxItems: 10000
          description: List of PartyIdInfo elements that the client would like to update or create FSP information about.
        currency:
          $ref: '#/components/schemas/Currency'
      required:
        - requestId
        - partyList
    ParticipantsTypeIDPutResponse:
      title: ParticipantsTypeIDPutResponse
      type: object
      description: 'The object sent in the PUT /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} callbacks.'
      properties:
        fspId:
          $ref: '#/components/schemas/FspId'
    ParticipantsTypeIDSubIDPostRequest:
      title: ParticipantsTypeIDSubIDPostRequest
      type: object
      description: 'The object sent in the POST /participants/{Type}/{ID}/{SubId} and /participants/{Type}/{ID} requests.'
      properties:
        fspId:
          $ref: '#/components/schemas/FspId'
        currency:
          $ref: '#/components/schemas/Currency'
      required:
        - fspId
    PartiesTypeIDPutResponse:
      title: PartiesTypeIDPutResponse
      type: object
      description: 'The object sent in the PUT /parties/{Type}/{ID} callback.'
      properties:
        party:
          $ref: '#/components/schemas/Party'
      required:
        - party
    Party:
      title: Party
      type: object
      description: Data model for the complex type Party.
      properties:
        partyIdInfo:
          $ref: '#/components/schemas/PartyIdInfo'
        merchantClassificationCode:
          $ref: '#/components/schemas/MerchantClassificationCode'
        name:
          $ref: '#/components/schemas/PartyName'
        personalInfo:
          $ref: '#/components/schemas/PartyPersonalInfo'
      required:
        - partyIdInfo
    PartyComplexName:
      title: PartyComplexName
      type: object
      description: Data model for the complex type PartyComplexName.
      properties:
        firstName:
          $ref: '#/components/schemas/FirstName'
        middleName:
          $ref: '#/components/schemas/MiddleName'
        lastName:
          $ref: '#/components/schemas/LastName'
    PartyIdentifier:
      title: PartyIdentifier
      type: string
      minLength: 1
      maxLength: 128
      description: Identifier of the Party.
      example: 16135551212
    PartyIdInfo:
      title: PartyIdInfo
      type: object
      description: Data model for the complex type PartyIdInfo.
      properties:
        partyIdType:
          $ref: '#/components/schemas/PartyIdType'
        partyIdentifier:
          $ref: '#/components/schemas/PartyIdentifier'
        partySubIdOrType:
          $ref: '#/components/schemas/PartySubIdOrType'
        fspId:
          $ref: '#/components/schemas/FspId'
      required:
        - partyIdType
        - partyIdentifier
    PartyIdType:
      title: PartyIdType
      type: string
      enum:
        - MSISDN
        - EMAIL
        - PERSONAL_ID
        - BUSINESS
        - DEVICE
        - ACCOUNT_ID
        - IBAN
        - ALIAS
      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](https://www.itu.int/rec/T-REC-E.164/en). 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](https://tools.ietf.org/html/rfc3696).

        - 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.
      example: PERSONAL_ID
    PartyName:
      title: PartyName
      type: string
      minLength: 1
      maxLength: 128
      description: Name of the Party. Could be a real name or a nickname.
      example: Henrik Karlsson
    PartyPersonalInfo:
      title: PartyPersonalInfo
      type: object
      description: Data model for the complex type PartyPersonalInfo.
      properties:
        complexName:
          $ref: '#/components/schemas/PartyComplexName'
        dateOfBirth:
          $ref: '#/components/schemas/DateOfBirth'
    PartyResult:
      title: PartyResult
      type: object
      description: Data model for the complex type PartyResult.
      properties:
        partyId:
          $ref: '#/components/schemas/PartyIdInfo'
        errorInformation:
          $ref: '#/components/schemas/ErrorInformation'
      required:
        - partyId
    PartySubIdOrType:
      title: PartySubIdOrType
      type: string
      minLength: 1
      maxLength: 128
      description: 'Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType.'
      example: DRIVING_LICENSE
    PersonalIdentifierType:
      title: PersonalIdentifierType
      type: string
      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
      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.
    QRCODE:
      title: QRCODE
      type: string
      minLength: 1
      maxLength: 64
      description: QR code used as a One Time Password.
    QuotesIDPutResponse:
      title: QuotesIDPutResponse
      type: object
      description: 'The object sent in the PUT /quotes/{ID} callback.'
      properties:
        transferAmount:
          $ref: '#/components/schemas/Money'
        payeeReceiveAmount:
          $ref: '#/components/schemas/Money'
        payeeFspFee:
          $ref: '#/components/schemas/Money'
        payeeFspCommission:
          $ref: '#/components/schemas/Money'
        expiration:
          $ref: '#/components/schemas/DateTime'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        ilpPacket:
          $ref: '#/components/schemas/IlpPacket'
        condition:
          $ref: '#/components/schemas/IlpCondition'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transferAmount
        - expiration
        - ilpPacket
        - condition
    QuotesPostRequest:
      title: QuotesPostRequest
      type: object
      description: The object sent in the POST /quotes request.
      properties:
        quoteId:
          $ref: '#/components/schemas/CorrelationId'
        transactionId:
          $ref: '#/components/schemas/CorrelationId'
        transactionRequestId:
          $ref: '#/components/schemas/CorrelationId'
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/Party'
        amountType:
          $ref: '#/components/schemas/AmountType'
        amount:
          $ref: '#/components/schemas/Money'
        fees:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        note:
          $ref: '#/components/schemas/Note'
        expiration:
          $ref: '#/components/schemas/DateTime'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - quoteId
        - transactionId
        - payee
        - payer
        - amountType
        - amount
        - transactionType
    Refund:
      title: Refund
      type: object
      description: Data model for the complex type Refund.
      properties:
        originalTransactionId:
          $ref: '#/components/schemas/CorrelationId'
        refundReason:
          $ref: '#/components/schemas/RefundReason'
      required:
        - originalTransactionId
    RefundReason:
      title: RefundReason
      type: string
      minLength: 1
      maxLength: 128
      description: Reason for the refund.
      example: Free text indicating reason for the refund.
    TokenCode:
      title: TokenCode
      type: string
      pattern: '^[0-9a-zA-Z]{4,32}$'
      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.'
    Transaction:
      title: Transaction
      type: object
      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 request.
      properties:
        transactionId:
          $ref: '#/components/schemas/CorrelationId'
        quoteId:
          $ref: '#/components/schemas/CorrelationId'
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/Party'
        amount:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          $ref: '#/components/schemas/Note'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transactionId
        - quoteId
        - payee
        - payer
        - amount
        - transactionType
    TransactionInitiator:
      title: TransactionInitiator
      type: string
      enum:
        - PAYER
        - PAYEE
      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.
      example: PAYEE
    TransactionInitiatorType:
      title: TransactionInitiatorType
      type: string
      enum:
        - CONSUMER
        - AGENT
        - BUSINESS
        - DEVICE
      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.
      example: CONSUMER
    TransactionRequestsIDPutResponse:
      title: TransactionRequestsIDPutResponse
      type: object
      description: 'The object sent in the PUT /transactionRequests/{ID} callback.'
      properties:
        transactionId:
          $ref: '#/components/schemas/CorrelationId'
        transactionRequestState:
          $ref: '#/components/schemas/TransactionRequestState'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transactionRequestState
    TransactionRequestsPostRequest:
      title: TransactionRequestsPostRequest
      type: object
      description: The object sent in the POST /transactionRequests request.
      properties:
        transactionRequestId:
          $ref: '#/components/schemas/CorrelationId'
        payee:
          $ref: '#/components/schemas/Party'
        payer:
          $ref: '#/components/schemas/PartyIdInfo'
        amount:
          $ref: '#/components/schemas/Money'
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        note:
          $ref: '#/components/schemas/Note'
        geoCode:
          $ref: '#/components/schemas/GeoCode'
        authenticationType:
          $ref: '#/components/schemas/AuthenticationType'
        expiration:
          $ref: '#/components/schemas/DateTime'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transactionRequestId
        - payee
        - payer
        - amount
        - transactionType
    TransactionRequestState:
      title: TransactionRequestState
      type: string
      enum:
        - RECEIVED
        - PENDING
        - ACCEPTED
        - REJECTED
      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.
      example: RECEIVED
    TransactionScenario:
      title: TransactionScenario
      type: string
      enum:
        - DEPOSIT
        - WITHDRAWAL
        - TRANSFER
        - PAYMENT
        - REFUND
      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.
      example: DEPOSIT
    TransactionsIDPutResponse:
      title: TransactionsIDPutResponse
      type: object
      description: 'The object sent in the PUT /transactions/{ID} callback.'
      properties:
        completedTimestamp:
          $ref: '#/components/schemas/DateTime'
        transactionState:
          $ref: '#/components/schemas/TransactionState'
        code:
          $ref: '#/components/schemas/Code'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transactionState
    TransactionState:
      title: TransactionState
      type: string
      enum:
        - RECEIVED
        - PENDING
        - COMPLETED
        - REJECTED
      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.
      example: RECEIVED
    TransactionSubScenario:
      title: TransactionSubScenario
      type: string
      pattern: '^[A-Z_]{1,32}$'
      description: 'Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).'
      example: LOCALLY_DEFINED_SUBSCENARIO
    TransactionType:
      title: TransactionType
      type: object
      description: Data model for the complex type TransactionType.
      properties:
        scenario:
          $ref: '#/components/schemas/TransactionScenario'
        subScenario:
          $ref: '#/components/schemas/TransactionSubScenario'
        initiator:
          $ref: '#/components/schemas/TransactionInitiator'
        initiatorType:
          $ref: '#/components/schemas/TransactionInitiatorType'
        refundInfo:
          $ref: '#/components/schemas/Refund'
        balanceOfPayments:
          $ref: '#/components/schemas/BalanceOfPayments'
      required:
        - scenario
        - initiator
        - initiatorType
    TransfersIDPutResponse:
      title: TransfersIDPutResponse
      type: object
      description: 'The object sent in the PUT /transfers/{ID} callback.'
      properties:
        fulfilment:
          $ref: '#/components/schemas/IlpFulfilment'
        completedTimestamp:
          $ref: '#/components/schemas/DateTime'
        transferState:
          $ref: '#/components/schemas/TransferState'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transferState
    TransfersPostRequest:
      title: TransfersPostRequest
      type: object
      description: The object sent in the POST /transfers request.
      properties:
        transferId:
          $ref: '#/components/schemas/CorrelationId'
        payeeFsp:
          $ref: '#/components/schemas/FspId'
        payerFsp:
          $ref: '#/components/schemas/FspId'
        amount:
          $ref: '#/components/schemas/Money'
        ilpPacket:
          $ref: '#/components/schemas/IlpPacket'
        condition:
          $ref: '#/components/schemas/IlpCondition'
        expiration:
          $ref: '#/components/schemas/DateTime'
        extensionList:
          $ref: '#/components/schemas/ExtensionList'
      required:
        - transferId
        - payeeFsp
        - payerFsp
        - amount
        - ilpPacket
        - condition
        - expiration
    TransferState:
      title: TransferState
      type: string
      enum:
        - RECEIVED
        - RESERVED
        - COMMITTED
        - ABORTED
      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 to a rejection or failure to perform the transfer.
      example: RESERVED
    UndefinedEnum:
      title: UndefinedEnum
      type: string
      pattern: '^[A-Z_]{1,32}$'
      description: The API data type UndefinedEnum is a JSON String consisting of 1 to 32 uppercase characters including an underscore character (_).
  parameters:
    Accept:
      name: Accept
      in: header
      required: true
      schema:
        type: string
      description: The `Accept` header field indicates the version of the API the client would like the server to use.
    Content-Length:
      name: Content-Length
      in: header
      required: false
      schema:
        type: integer
      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).
    Content-Type:
      name: Content-Type
      in: header
      schema:
        type: string
      required: true
      description: The `Content-Type` header indicates the specific version of the API used to send the payload body.
    Date:
      name: Date
      in: header
      schema:
        type: string
      required: true
      description: The `Date` header field indicates the date when the request was sent.
    FSPIOP-Destination:
      name: FSPIOP-Destination
      in: header
      schema:
        type: string
      required: false
      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.'
    FSPIOP-Encryption:
      name: FSPIOP-Encryption
      in: header
      schema:
        type: string
      required: false
      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.
    FSPIOP-HTTP-Method:
      name: FSPIOP-HTTP-Method
      in: header
      schema:
        type: string
      required: false
      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 [the API Signature document](https://github.com/mojaloop/docs/tree/main/Specification%20Document%20Set).'
    FSPIOP-Signature:
      name: FSPIOP-Signature
      in: header
      schema:
        type: string
      required: false
      description: The `FSPIOP-Signature` header field is a non-HTTP standard field used by the API for applying an end-to-end request signature.
    FSPIOP-Source:
      name: FSPIOP-Source
      in: header
      schema:
        type: string
      required: true
      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`).
    FSPIOP-URI:
      name: FSPIOP-URI
      in: header
      schema:
        type: string
      required: false
      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 [the API Signature document](https://github.com/mojaloop/docs/tree/main/Specification%20Document%20Set).'
    ID:
      name: ID
      in: path
      required: true
      schema:
        type: string
      description: The identifier value.
    SubId:
      name: SubId
      in: path
      required: true
      schema:
        type: string
      description: 'A sub-identifier of the party identifier, or a sub-type of the party identifier''s type. For example, `PASSPORT`, `DRIVING_LICENSE`.'
    Type:
      name: Type
      in: path
      required: true
      schema:
        type: string
      description: 'The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.'
    X-Forwarded-For:
      name: X-Forwarded-For
      in: header
      schema:
        type: string
      required: false
      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 should be expected and supported by implementers of the API.
        **Note:** An alternative to `X-Forwarded-For` is defined in [RFC 7239](https://tools.ietf.org/html/rfc7239). However, to this point RFC 7239 is less-used and supported than `X-Forwarded-For`.
  headers:
    Content-Length:
      required: false
      schema:
        type: integer
      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).
    Content-Type:
      schema:
        type: string
      required: true
      description: The `Content-Type` header indicates the specific version of the API used to send the payload body.
  responses:
    '200':
      description: OK
    '202':
      description: Accepted
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '403':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '404':
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '405':
      description: Method Not Allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '406':
      description: Not Acceptable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '501':
      description: Not Implemented
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '503':
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorInformationResponse'
      headers:
        Content-Length:
          $ref: '#/components/headers/Content-Length'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
paths:
  /health:
    get:
      summary: This file is for demonstration purposes.
      description: A valid OpenApi3 specification requires `paths` to be defined.
      responses:
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
