openapi: 3.0.1
info:
  title: Payment Order API
  description: Initiates payment orders.
paths:
  /accounts/{accountId}/blocking-rules:
    post:
      tags:
      - SEPA Direct Debit
      description: "Request a blocking rule to be added to a specific Mambu account.\
        \ When a blocking rule has been added for a specific mandate ID, collection\
        \ requests for that mandate will be rejected and a pacs.002 message sent as\
        \ response with reason code MS02. If no specific mandate ID is provided, all\
        \ direct debit collection requests for the given account will be rejected.\
        \ For more information on blocking SEPA Direct Debits, consult the [Blocking\
        \ SEPA Direct Debits](https://support.mambu.com/docs/blocking-sepa-direct-debits)\
        \ article in our user guide."
      operationId: createBlockingRule
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: accountId
        in: path
        required: true
        schema:
          type: string
          description: ID of the Mambu Deposit account.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBlockingRule"
            examples:
              createProductBlockingRule:
                summary: Request blocking all SEPA Direct Debits for the specified
                  account.
                description: createProductBlockingRule
                value:
                  product: SEPA_DIRECT_DEBIT
              createCeditorMandateBlockingRule:
                summary: Request blocking SEPA Direct Debits for a specific mandate
                  for the specified account.
                description: createCeditorMandateBlockingRule
                value:
                  product: SEPA_DIRECT_DEBIT
                  creditorMandate:
                    mandateRelatedInformation:
                      mandateIdentification: "578798984"
                    creditorSchemeIdentification:
                      identification:
                        privateIdentification: ID777444887
      responses:
        "202":
          description: Accepted - The Blocking Rule has been prepared for processing.
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                productCannotBeBlocked:
                  summary: Specified payment product cannot be blocked.
                  description: productCannotBeBlocked
                  value:
                    tppMessages:
                    - category: ERROR
                      code: PARAMETER_NOT_SUPPORTED
                      path: product
                      text: SEPA_CREDIT_TRANSFER cannot be blocked
        "405":
          description: "Method Not Allowed - This code is only sent when the HTTP\
            \ method (PUT, POST, DELETE, GET etc.) is not supported by a specific\
            \ endpoint. It has nothing to do with the content, payment or account\
            \ information data model."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedHttpMethod:
                  summary: The request was submitted with an unsupported HTTP method.
                  description: unsupportedHttpMethod
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "415":
          description: Unsupported Media Type - A media type which the serves does
            not support has been supplied.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedContentType:
                  summary: The request was submitted with an unsupported content type.
                    For example "application/xml" instead of "application/json".
                  description: unsupportedContentType
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
    delete:
      tags:
      - SEPA Direct Debit
      description: "Request deletion of blocking rules for the specified Mambu account.\
        \ If no request body is provided, all rules for the account will be removed,\
        \ if you provide a JSON body with a specific mandate ID, only the rule for\
        \ that mandate will be removed. For more information on blocking SEPA Direct\
        \ Debits, consult the [Blocking SEPA Direct Debits](https://support.mambu.com/docs/blocking-sepa-direct-debits)\
        \ article in our user guide."
      operationId: deleteBlockingRules
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: accountId
        in: path
        required: true
        schema:
          type: string
          description: ID of the Mambu Deposit account.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteBlockingRule"
            examples:
              deleteAllBlockingRules:
                summary: Delete all blocking rules for the specified account.
                description: deleteAllBlockingRules
              deleteProductBlockingRule:
                summary: Delete product blocking rule for the specified account.
                description: deleteProductBlockingRule
                value:
                  product: SEPA_DIRECT_DEBIT
              deleteCreditorMandateBlockingRule:
                summary: Delete creditor mandate blocking rule for the specified account.
                description: deleteCreditorMandateBlockingRule
                value:
                  product: SEPA_DIRECT_DEBIT
                  creditorMandate:
                    mandateRelatedInformation:
                      mandateIdentification: "578798984"
                    creditorSchemeIdentification:
                      identification:
                        privateIdentification: ID777444887
      responses:
        "202":
          description: Accepted - Blocking rules for the specified account have been
            submitted for deletion.
        "405":
          description: "Method Not Allowed - This code is only sent when the HTTP\
            \ method (PUT, POST, DELETE, GET etc.) is not supported by a specific\
            \ endpoint. It has nothing to do with the consent, payment or account\
            \ information data model."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedHttpMethod:
                  summary: The request was submitted with an unsupported HTTP method.
                  description: unsupportedHttpMethod
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "415":
          description: Unsupported Media Type - A media type which the serves does
            not support has been supplied.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedContentType:
                  summary: The request was submitted with an unsupported content type.
                    For example "application/xml" instead of "application/json".
                  description: unsupportedContentType
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /accounts/{accountId}/identifications:
    get:
      description: Gets associations of an external account identification (IBAN or
        proprietary) to a Mambu Account.
      operationId: getMapping
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - name: limit
        in: query
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          description: "Limit the number of identifications retrieved. The default\
            \ limit is 50, can be specified up to 1000."
          format: int32
          default: 50
      - name: offset
        in: query
        schema:
          minimum: 0
          type: integer
          description: Offset determines how many records will be skipped before being
            included in the returned results. The default offset value is 0.
          format: int64
          default: 0
      responses:
        "200":
          description: OK - List existing external identifications.
          headers:
            Items-Offset:
              description: The index of the first returned item.
              required: true
              style: simple
            Items-Limit:
              description: The requested page size.
              required: true
              style: simple
            Items-Total:
              description: The total count of available items.
              required: true
              style: simple
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Identification"
              examples:
                Identification:
                  summary: List of identifications
                  description: Identification
                  value:
                  - iban: DE46606951125202071272
                  - currency: USD
                  - other:
                      identification: ABCDE1234F
                      scheme: PAN
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
    post:
      description: "Adds association of an external account identification (IBAN or\
        \ proprietary) to a Mambu Account. The currency of the association will be\
        \ the one of the underlining Mambu account. If an IBAN is supposed to be a\
        \ multi-currency one, this API needs to be invoked multiple times with different\
        \ Mambu accounts (for the different currencies)."
      operationId: createMapping
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAccountMapping"
            examples:
              createMambuAccountMapping:
                summary: Create mapping between a proprietary identification and a
                  Mambu Account
                description: createMambuAccountMapping
                value:
                  identification:
                    other:
                      identification: ABCDE1234F
                      scheme: PAN
                    iban: DE46606951125202071272
                    currency: USD
      responses:
        "201":
          description: Created - Association successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountMappingResponse"
              examples:
                accountMappingResponse:
                  summary: Successful account identification request.
                  description: accountMappingResponse
                  value: {}
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                invalidIdentification:
                  summary: IBAN is not valid.
                  description: invalidIdentification
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban size must be between 15 and 34
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban invalid IBAN value
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /accounts/identifications:
    put:
      description: 'Create or replace associations of an external account identification
        (IBAN or proprietary) to one of Mambu Accounts. The currency of the association
        will be the one of the underlining Mambu account. '
      operationId: createMappings
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAccountMappings"
            examples:
              createMambuAccountMappings:
                summary: Create mapping between a proprietary identification and multiple
                  Mambu Accounts with different currencies
                description: createMambuAccountMappings
                value: |-
                  {
                    "identification": {
                      "iban": "DE46606951125202071272"
                    },
                    "accountIds": [
                      "123",
                    ]
                  }
      responses:
        "201":
          description: Created - Association successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountMappingResponse"
              examples:
                accountMappingResponse:
                  summary: Successful account identification request.
                  description: accountMappingResponse
                  value: {}
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                invalidIdentification:
                  summary: IBAN is not valid.
                  description: invalidIdentification
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban size must be between 15 and 34
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban invalid IBAN value
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /accounts/identifications:search:
    post:
      description: Searches identifications (with MambuID included) based on provided
        filter criteria
      operationId: searchAccountIdentifications
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountIdentificationsSearchRequestDTO"
      responses:
        "200":
          description: OK - List of found identifications with accountId
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AccountIdentificationsSearchResponseDTO"
              examples:
                AccountIdentificationsSearchResponse:
                  summary: Successful account identification search response.
                  description: AccountIdentificationsSearchResponse
                  value:
                  - accountId: test123
                    currency: EUR
                    type: DEPOSIT
                    identification:
                      iban: DE46606951125202071272
                      identification: ABCDE1234F
                      scheme: PAN
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                invalidSearchFilter:
                  summary: Search filter is not valid
                  description: invalidSearchFilter
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: "searchAccountIdentifications.arg0.filterCriteria[0].field"
                      text: "filterCriteria[0].field Should be one of: schema, iban,\
                        \ currency, identification"
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /collections:
    post:
      tags:
      - SEPA Direct Debit
      description: "Creates a collection initiation request. This covers the flows\
        \ as described in the [SEPA Direct Debit](https://support.mambu.com/docs/sepa-direct-debit-creditor-flow)\
        \ section of our user guide."
      operationId: initiateCollection
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: X-Request-ID
        in: header
        required: true
        schema:
          type: string
          description: "ID of the request, unique to the call, as determined by the\
            \ initiating party."
      - name: Idempotency-Key
        in: header
        schema:
          type: string
          description: Prevents retried requests to be executed multiple times. Subsequent
            requests with the same Idempotency Key will not be processed and will
            return a cached result.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CollectionDTO"
            examples:
              initiateCollectionRequest:
                summary: Initiate collection request for accounts identified by IBAN
                  and creditor agent identified by BIC.
                description: initiateCollectionRequest
                value: |-
                  {
                    "debtorAccount": {
                      "identification": {
                        "iban": "DE46606951125202071272"
                      },
                      "currency": "EUR"
                    },
                    "debtorName": "John Doe",
                    "serviceLevel": "SEPA",
                    "instructedAmount": {
                      "currency": "EUR",
                      "amount": "500"
                    },
                    "creditorAccount": {
                      "identification": {
                        "iban": "DE16195554277485442959"
                      },
                      "currency": "EUR"
                    },
                    "creditorName": "Merchant123"
                    "paymentIdentification": {
                      "transactionIdentification": "113T9bs6ad48ga1216d772430401s01sd2"
                     },
                   "requestedExecutionDate": "2020-09-01"
                   "mandateRelatedInformation": {
                      "mandateIdentification": "16ead91c975c4881a60c",
                      "dateOfSignature": "2020-01-31"
                    },
                   "paymentTypeInformation": {
                       "sequenceType": "FRST"
                     },
                   "creditorSchemeIdentification": {
                       "identification": {
                         "privateIdentification": "I48799148795"
                    },
                  }
      responses:
        "201":
          description: Created - Collection Initiation request was correctly performed
            (but not yet accepted) nor executed.
          headers:
            Location:
              description: "Location of the created collection order request resource,\
                \ for future reference or status polling."
              required: true
              style: simple
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CollectionResponse"
              examples:
                initiateCollectionResponse:
                  summary: Successful collection initiation response.
                  description: initiateCollectionResponse
                  value:
                    transactionStatus: RCVD
                    collectionId: e38458a4-d955-4a39-8e21-9608e9600b3d
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                missingMandatoryField:
                  summary: Identification for debtor account was not provided.
                  description: missingMandatoryField
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: debtorAccount.identification
                      text: debtorAccount.identification may not be null
        "405":
          description: "Method Not Allowed - This code is only sent when the HTTP\
            \ method (PUT, POST, DELETE, GET etc.) is not supported on a specific\
            \ endpoint. It has nothing to do with the content, payment or account\
            \ information data model."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedHttpMethod:
                  summary: The request was submitted with an unsupported HTTP method.
                  description: unsupportedHttpMethod
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "415":
          description: Unsupported Media Type - A media type which the serves does
            not support has been supplied.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedContentType:
                  summary: The request was submitted with an unsupported content type.
                    For example "application/xml" instead of "application/json".
                  description: unsupportedContentType
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /log:
    post:
      operationId: logArgument
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LogRequest"
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /payments/financial-institution-credit-transfers:
    post:
      operationId: initiateCreditTransfer
      parameters:
      - name: X-Request-ID
        in: header
        required: true
        schema:
          type: string
          description: "ID of the request, unique to the call, as determined by the\
            \ initiating party."
      - name: Idempotency-Key
        in: header
        schema:
          type: string
          description: Prevents retried requests to be executed multiple times. Subsequent
            requests with the same Idempotency Key will not be processed and will
            return a cached result.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FinancialInstitutionPaymentDTO"
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /payments/credit-transfers:
    post:
      operationId: initiateCreditTransfer_1
      parameters:
      - name: X-Request-ID
        in: header
        required: true
        schema:
          type: string
          description: "ID of the request, unique to the call, as determined by the\
            \ initiating party."
      - name: Idempotency-Key
        in: header
        schema:
          type: string
          description: Prevents retried requests to be executed multiple times. Subsequent
            requests with the same Idempotency Key will not be processed and will
            return a cached result.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Iso20022PaymentDTO"
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /payments:
    post:
      tags:
      - SEPA Credit Transfers
      description: "Creates a payment initiation request. Payments using the SEPA\
        \ Credit Transfer scheme can only be created for the current date. A pacs.008\
        \ message will be generated from the data provided in this request. For more\
        \ information on how these fields map to SEPA XML messages, refer to the [SEPA\
        \ Credit Transfer Techincal Information](https://support.mambu.com/docs/sepa-credit-transfer-technical-information#pacs00800102)\
        \ article in our user guide."
      operationId: initiatePayment
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: X-Request-ID
        in: header
        required: true
        schema:
          type: string
          description: "ID of the request, unique to the call, as determined by the\
            \ initiating party."
      - name: Idempotency-Key
        in: header
        schema:
          type: string
          description: Prevents retried requests to be executed multiple times. Subsequent
            requests with the same Idempotency Key will not be processed and will
            return a cached result.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InitiationPaymentDTO"
            examples:
              initiatePaymentRequest:
                summary: Initiate same day payment request for accounts identified
                  by IBAN and creditor agent identified by BIC with creditor and debtor
                  address information.
                description: initiatePaymentRequest
                value:
                  debtorAccount:
                    identification:
                      iban: DE46606951125202071272
                    currency: EUR
                  debtorName: John Doe
                  debtorAddress:
                    street: Karl-Liebknecht-Str. 5
                    buildingNumber: "5234"
                    city: Berlin
                    postalCode: "10178"
                    countryCode: DE
                  serviceLevel: SEPA
                  instructedAmount:
                    currency: EUR
                    amount: "500"
                  creditorAccount:
                    identification:
                      iban: DE16195554277485442959
                    currency: EUR
                  creditorAgent:
                    institutionIdentification:
                      bicfi: DEUTDEFF
                  creditorName: Merchant123
                  creditorAddress:
                    street: Am Olympiapark 1
                    buildingNumber: "1"
                    city: Munchen
                    postalCode: "80809"
                    countryCode: DE
      responses:
        "201":
          description: Created - Payment Initiation request was correctly performed
            (but not yet accepted) nor executed.
          headers:
            Location:
              description: "Location of the created payment order request resource,\
                \ for future reference or status polling."
              required: true
              style: simple
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponse"
              examples:
                initiatePaymentResponse:
                  summary: Successful payment initiation request.
                  description: initiatePaymentResponse
                  value:
                    transactionStatus: RCVD
                    paymentId: e38458a4-d955-4a39-8e21-9608e9600b3d
                    transactionFeeIndicator: false
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                missingMandatoryField:
                  summary: Identification for debtor account was not provided.
                  description: missingMandatoryField
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: debtorAccount.identification
                      text: debtorAccount.identification may not be null
        "405":
          description: "Method Not Allowed - This code is only sent when the HTTP\
            \ method (PUT, POST, DELETE, GET etc.) is not supported by a specific\
            \ endpoint. It has nothing to do with the consent, payment or account\
            \ information data model."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedHttpMethod:
                  summary: The request was submitted with an unsupported HTTP method.
                  description: unsupportedHttpMethod
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "415":
          description: Unsupported Media Type - A media type which the serves does
            not support has been supplied.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                unsupportedContentType:
                  summary: The request was submitted with an unsupported content type.
                    For example "application/xml" instead of "application/json".
                  description: unsupportedContentType
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FailedPaymentResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /payments/standing-orders/{id}/executions:
    get:
      tags:
      - Standing Order
      description: Get executions of standing order
      operationId: getExecutionsByStandingOrderId
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: ApiKey
        in: header
        description: ApiKey header that is used for authentication
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK - Standing orders executions retrieval was successful.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StandingOrderExecutionResponse"
              examples:
                StandingOrderExecutionResponse:
                  description: StandingOrderExecutionResponse
                  value:
                  - standingOrderId: standing-order-id-qwerty
                    paymentOrderId: paymentorderid54
                    requestedExecuteOn: 2023-01-26T15:51:27
                    status: FAILED
                    creationDate: 2023-01-26T15:52:27.865848Z
                    type: RETRY
                    failReason: INSUFFICIENT_FUNDS
  /payments/standing-orders/{id}:
    get:
      tags:
      - Standing Order
      description: Gets Standing order information
      operationId: getStandingOrderDetails
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK - Returns Standing order item.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StandingOrderGetResponse"
              examples:
                standingOrderGetResponse:
                  summary: Standing order get response.
                  description: standingOrderGetResponse
                  value:
                    id: 9726992c-bda4-4867-9264-f9168337d0ec
                    payment:
                      scheme: SEPA
                      instructedAmount:
                        currency: EUR
                        amount: "500"
                      debtorAccount:
                        identification:
                          iban: DE87200500001234567890
                        currency: EUR
                      creditorAccount:
                        identification:
                          other:
                            identification: "1234"
                            scheme: PAN
                        currency: EUR
                      creditorName: CreditorName
                      debtorName: DebtorName
                      remittanceInformationUnstructured: Remittance Info
                    startDate: 2022-11-10
                    frequency: DAILY
                    endDate: 2023-11-10
                    creationDateTime: 2022-11-09T21:41:29+02:00
                    status: ACTIVE
                    lastExecution: 2022-11-17
                    nextExecution: 2022-11-18
                    paymentsCount: 2
                    ownerId: some-owner-id
                    retryCount: 3
                    suspendDateFrom: null
                    suspendDateTo: null
        "404":
          description: Not found - cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                standingOrderNotFound:
                  summary: Unable to get Standing order
                  description: standingOrderNotFound
                  value:
                    tppMessages:
                    - category: ERROR
                      code: RESOURCE_UNKNOWN
                      text: "Unable to find Standing order with id: 9726992c-bda4-4867-9264-f9168337d0ec."
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
    delete:
      tags:
      - Standing Order
      description: Cancel Standing order
      operationId: cancelStandingOrder
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "204":
          description: Standing order canceled.
        "404":
          description: Not found - cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                standingOrderNotFound:
                  summary: Unable to find Standing order
                  description: standingOrderNotFound
                  value:
                    tppMessages:
                    - category: ERROR
                      code: RESOURCE_UNKNOWN
                      text: "Unable to find Standing order with id: 9726992c-bda4-4867-9264-f9168337d0ec."
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /payments/standing-orders:
    post:
      tags:
      - Standing Order
      description: API creates standing orders. Standing order creation will trigger
        periodic payments for provided frequency from start date until the end date.
      operationId: createStandingOrder
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/StandingOrderDTO"
            examples:
              createStandingOrder:
                summary: Create standing orders
                description: createStandingOrder
                value: "{\n  \"payment\": {\n    \"scheme\": \"SEPA\",\n    \"instructedAmount\"\
                  : {\n      \"currency\": \"EUR\",\n      \"amount\": \"500\"\n \
                  \   },\n    \"debtorAccount\": {\n      \"identification\": {\n\
                  \        \"iban\": \"DE87200500001234567890\"\n      },\n      \"\
                  currency\": \"EUR\"\n    },\n    \"creditorAccount\": {\n      \"\
                  identification\": {\n        \"other\": {\n          \"identification\"\
                  : \"1234\",\n          \"scheme\": \"PAN\"\n        }\n      },\n\
                  \      \"currency\": \"EUR\"\n    },\n    \"creditorName\": \"CreditorName\"\
                  ,\n    \"debtorName\": \"DebtorName\",\n    \"remittanceInformationUnstructured\"\
                  : \"Remittance Info\"\n  },\n  \"startDate\": [\n    2022,\n   \
                  \ 11,\n    8\n  ],\n  \"frequency\": \"DAILY\",\n  \"endDate\":\
                  \ [\n    2022,\n    11,\n    8\n  ],\n  \"ownerId\": \"some-owner-id\"\
                  , \n  \"retryPolicy\": {\n“ +    \"retryCount\": \"3\"\n  }\n}\n"
      responses:
        "201":
          description: Created - Standing order successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StandingOrderCreateResponse"
              examples:
                standingOrderCreateResponse:
                  summary: Successful standing order request.
                  description: standingOrderCreateResponse
                  value:
                    id: 9726992c-bda4-4867-9264-f9168337d0ec
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                invalidStandingOrderRequest:
                  summary: IBAN is not valid.
                  description: invalidStandingOrderRequest
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban size must be between 15 and 34
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: iban
                      text: iban invalid IBAN value
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
  /payments/standing-orders:search:
    post:
      tags:
      - Standing Order
      description: Search for standing orders by search filters such as ownerId
      operationId: searchStandingOrders
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      - name: ApiKey
        in: header
        description: ApiKey header that is used for authentication
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/StandingOrderSearchRequest"
            examples:
              standingOrderSearchRequest:
                summary: Search for standing orders by search filters
                description: standingOrderSearchRequest
                value: |-
                  {
                     "filterCriteria": [
                         {
                         "field": "OWNER_ID",
                         "operator": "EQUALS",
                         "value": "string"
                         }
                         {
                         "field": "STATUS",
                         "operator": "EQUALS",
                         "value": "string"
                         }
                     ],
                    "limit": 500,
                    "offset": 0
                  }
      responses:
        "200":
          description: OK - Standing orders search was successful.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StandingOrderSearchResponse"
              examples:
                StandingOrderSearchResponse:
                  description: StandingOrderSearchResponse
                  value:
                  - ownerId: some_kind_of_id_from_client
                    id: 9726992c-bda4-4867-9264-f9168337d0ec
                    payment:
                      scheme: SEPA
                      instructedAmount:
                        currency: EUR
                        amount: "500"
                      debtorAccount:
                        identification:
                          iban: DE87200500001234567890
                        currency: EUR
                      creditorAccount:
                        identification:
                          other:
                            identification: "1234"
                            scheme: PAN
                        currency: EUR
                      creditorName: CreditorName
                      debtorName: DebtorName
                      remittanceInformationUnstructured: Remittance Info
                    startDate: 2022-11-10
                    frequency: DAILY
                    endDate: 2023-11-10
                    creationDateTime: 2022-11-09T21:41:29+02:00
                    status: ACTIVE
                  - ownerId: some_kind_of_id_from_client
                    id: 9726992c-bda4-4867-9264-13245679fe
                    payment:
                      scheme: SEPA
                      instructedAmount:
                        currency: EUR
                        amount: "100"
                      debtorAccount:
                        identification:
                          iban: DE87200500001234567890
                        currency: EUR
                      creditorAccount:
                        identification:
                          other:
                            identification: "1234"
                            scheme: PAN
                        currency: EUR
                      creditorName: CreditorName
                      debtorName: DebtorName
                      remittanceInformationUnstructured: Remittance Info
                    startDate: 2022-11-10
                    frequency: DAILY
                    endDate: 2023-11-10
                    creationDateTime: 2022-11-09T21:41:29+02:00
                    status: ACTIVE
                    suspendDateFrom: null
                    suspendDateTo: null
  /payments/standing-orders:suspend:
    post:
      tags:
      - Standing Order
      description: API suspends standing order for a particular period of time.
      operationId: suspendStandingOrder
      parameters:
      - name: Content-Type
        in: header
        description: application/json
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/StandingOrderSuspendDTO"
            examples:
              suspendStandingOrder:
                summary: Suspend standing order
                description: suspendStandingOrder
                value:
                  id: 9726992c-bda4-4867-9264-f9168337d0ec
                  startDate:
                  - 2022
                  - 11
                  - 8
                  endDate:
                  - 2022
                  - 11
                  - 9
      responses:
        "200":
          description: OK - Standing order successfully suspended.
        "400":
          description: Bad Request - Validation error occurred. This code will cover
            malformed syntax in request or incorrect data in payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                invalidStandingOrderSuspendRequest:
                  summary: request is invalid
                  description: invalidStandingOrderSuspendRequest
                  value:
                    tppMessages:
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: id
                      text: id must not be null
                    - category: ERROR
                      code: FORMAT_ERROR
                      path: endDate
                      text: endDate must not be null
        "500":
          description: Internal Server Error - Internal server error occurred.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TppMessagesResponse"
              examples:
                internalServerError:
                  summary: The request failed due to an internal server error.
                  description: internalServerError
                  value:
                    tppMessages:
                    - category: ERROR
                      code: SERVICE_INVALID
                      text: There was an error processing your request. It has been
                        logged (ID a449ea6319107e42).
        "503":
          description: "Service Unavailable - The server is currently unavailable.\
            \ Generally, this is a temporary state."
components:
  schemas:
    FailedPaymentResponse:
      required:
      - tppMessages
      type: object
      properties:
        tppMessages:
          type: array
          description: Messages to the TPP on operational issues.
          items:
            $ref: "#/components/schemas/TPPMessage"
    TPPMessage:
      required:
      - category
      - code
      type: object
      properties:
        category:
          type: string
          description: Category designates the message severity.
          enum:
          - ERROR
          - WARN
        code:
          type: string
          description: "Message error codes:<ul><li>PARAMETER_NOT_SUPPORTED: The parameter\
            \ is not supported by the API.</li><li>FORMAT_ERROR: Format of certain\
            \ request fields are not matching the API requirements. An explicit path\
            \ to the corresponding field might be added in the return message.</li><li>SERVICE_INVALID:\
            \ The addressed service is not valid for the addressed resources or the\
            \ submitted data.</li><li>ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION:\
            \ This identification is already mapped to the specified Mambu Account.</li></ul>"
          enum:
          - PARAMETER_NOT_SUPPORTED
          - FORMAT_ERROR
          - SERVICE_INVALID
          - RESOURCE_UNKNOWN
          - ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION
        path:
          type: string
        text:
          maxLength: 512
          minLength: 1
          type: string
          description: Additional explaining text.
      description: Messages to the TPP on operational issues.
    CreateBlockingRule:
      required:
      - product
      type: object
      properties:
        product:
          type: string
          description: "Payment Product to which this rule applies. For now, blocking\
            \ rules can be applied to `SEPA_DIRECT_DEBIT` only"
        creditorMandate:
          $ref: "#/components/schemas/CreditorMandateDTO"
    CreditorMandateDTO:
      required:
      - creditorSchemeIdentification
      - mandateRelatedInformation
      type: object
      properties:
        mandateRelatedInformation:
          $ref: "#/components/schemas/MandateRelatedInformationDTO"
        creditorSchemeIdentification:
          $ref: "#/components/schemas/CreditorSchemeIdentificationDTO"
      description: Collection mandate identification for deleting a rule applying
        to a specific mandate.
    CreditorSchemeIdentificationDTO:
      required:
      - identification
      type: object
      properties:
        identification:
          $ref: "#/components/schemas/IdentificationDTO"
      description: Credit party that signs the mandate.
    MandateRelatedInformationDTO:
      required:
      - mandateIdentification
      type: object
      properties:
        mandateIdentification:
          type: string
          description: "Unique identification, as assigned by the creditor, to unambiguously\
            \ identify the collection mandate."
    PrivateIdentificationDTO:
      required:
      - privateIdentification
      type: object
      properties:
        privateIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: "Unique and unambiguous identification of a person, eg, passport.\
            \ Must not exceed 35 characters."
      description: Unique and unambiguous identification of a party.
    AccountInternalIdentification:
      type: object
      properties:
        id:
          type: string
        currency:
          type: string
        type:
          type: string
          enum:
          - DEPOSIT
          - LOAN
      description: Mambu Accounts corresponding to the current IBAN / proprietary
        identification
    AccountMappingResponse:
      type: object
      properties:
        internalAccounts:
          type: array
          description: Mambu Accounts corresponding to the current IBAN / proprietary
            identification
          items:
            $ref: "#/components/schemas/AccountInternalIdentification"
        tppMessages:
          type: array
          description: Messages to the TPP on operational issues.
          items:
            $ref: "#/components/schemas/TPPMessage"
    TppMessagesResponse:
      required:
      - tppMessages
      type: object
      properties:
        tppMessages:
          type: array
          description: Messages to the TPP on operational issues.
          items:
            $ref: "#/components/schemas/TPPMessage"
    CreateAccountMapping:
      required:
      - identification
      type: object
      properties:
        identification:
          $ref: "#/components/schemas/Identification"
    Identification:
      type: object
      properties:
        iban:
          maxLength: 34
          minLength: 15
          type: string
          description: ISO 13616 International Bank Account Number (IBAN) - identifier
            used internationally by financial institutions to uniquely identify the
            account of a customer.
        other:
          $ref: "#/components/schemas/Other"
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: ISO 4217 Alpha 3 currency code.
      description: Identification
    Other:
      required:
      - identification
      - scheme
      type: object
      properties:
        identification:
          maxLength: 34
          minLength: 1
          type: string
          description: Identification assigned by an institution.
        scheme:
          maxLength: 35
          minLength: 1
          type: string
          description: Name of the identification scheme.
      description: "Unique identification of an account, as assigned by the account\
        \ servicer, using other identification scheme."
    CreateAccountMappings:
      required:
      - accountIds
      - identification
      type: object
      properties:
        identification:
          $ref: "#/components/schemas/Identification"
        accountIds:
          type: array
          description: IDs of the Mambu Accounts which will be correlated to the IBAN
            or proprietary identification. The association will be made on account
            currency.
          items:
            type: string
            description: IDs of the Mambu Accounts which will be correlated to the
              IBAN or proprietary identification. The association will be made on
              account currency.
    DeleteBlockingRule:
      required:
      - product
      type: object
      properties:
        product:
          type: string
          description: Payment product to remove blocking rules from. Must be `SEPA_DIRECT_DEBIT`.
        creditorMandate:
          $ref: "#/components/schemas/CreditorMandateDTO"
    AccountIdentificationsSearchResponseDTO:
      required:
      - accountId
      - identification
      type: object
      properties:
        accountId:
          type: string
          description: AccountID (Unique and unambiguous identification for the account.)
        currency:
          type: string
          description: Account currency
        type:
          type: string
          description: Account type
        identification:
          $ref: "#/components/schemas/Identification"
    AccountIdentificationsFilterCriteriaDTO:
      required:
      - field
      - operator
      type: object
      properties:
        field:
          type: string
          description: Contains the actual searching fields that can be native (one
            from the provided list)
          enum:
          - SCHEME
          - IBAN
          - IDENTIFICATION
        value:
          type: string
          description: The value to match the searching criteria
        operator:
          type: string
          description: "EQUALS - checks that 'field' equals to 'value' (strict equals,\
            \ does not support parts or masks)"
          enum:
          - EQUALS
          - IN
          - BETWEEN
          - GREATER_THAN
          - LESS_THAN
      description: Account identification search criteria
    AccountIdentificationsSearchRequestDTO:
      required:
      - filterCriteria
      type: object
      properties:
        filterCriteria:
          type: array
          description: Account identification search criteria
          items:
            $ref: "#/components/schemas/AccountIdentificationsFilterCriteriaDTO"
    CollectionResponse:
      required:
      - collectionId
      - transactionStatus
      type: object
      properties:
        transactionStatus:
          type: string
          description: "PSD2 transaction status codes:<ul><li>ACSC: Settlement on\
            \ the debtor’s account has been completed.<br> <b>Usage</b>: this can\
            \ be used by the first agent to report to the debtor that the transaction\
            \ has been completed.<br> <b>Warning</b>: this status is provided for\
            \ reporting techincal transaction status, not for financial information.\
            \ It can only be used after bilateral agreement.</li><li>ACSP: All preceding\
            \ checks such as technical validation and customer profile were successful.\
            \ The payment initiation has been accepted for execution.</li><li>ACTC:\
            \ Authentication, syntactical and semantical validation are successful.</li><li>CPVP:\
            \ The previous technical validation was successful. The customer profile\
            \ validation has started. Only used for Anti Money Laundering flows.</li><li>RCVD:\
            \ Payment initiation has been received by the receiving agent.</li><li>PDNG:\
            \ Payment initiation, or an individual transaction included in the payment\
            \ initiation is pending. Further checks and status updates will be performed.</li><li>RJCT:\
            \ Payment initiation, or an individual transaction included in the payment\
            \ initiation has been rejected.</li></ul>"
          enum:
          - ACSC
          - ACSP
          - ACTC
          - CPVP
          - RCVD
          - PDNG
          - RJCT
        collectionId:
          type: string
          description: Resource identification of the generated payment initiation
            resource.
        transactionFeeIndicator:
          type: boolean
          description: "If set to `true`, the transaction will involve additional\
            \ costs or fees."
        tppMessages:
          type: array
          description: Messages to the TPP on operational issues.
          items:
            $ref: "#/components/schemas/TPPMessage"
    AccountDTO:
      required:
      - identification
      type: object
      properties:
        identification:
          $ref: "#/components/schemas/IdentificationDTO"
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: ISO 4217 Alpha 3 currency code.
      description: Settlement account used when settlement method is INDA/INGA.
    AddressDTO:
      required:
      - countryCode
      type: object
      properties:
        street:
          maxLength: 70
          minLength: 1
          type: string
          description: The street name of the adress. Must not exceed 70 characters.
        buildingNumber:
          maxLength: 16
          minLength: 1
          type: string
          description: ' The building or street number of the address. Must not exceed
            16 characters.'
        city:
          maxLength: 35
          minLength: 1
          type: string
          description: The city of the address. Must not exceed 35 characters.
        postalCode:
          maxLength: 16
          minLength: 1
          type: string
          description: The postal code of the address. Must not exceed 16 characters.
        countryCode:
          maxLength: 2
          minLength: 2
          type: string
          description: "Two characters as defined by ISO 3166. For example `DE` for\
            \ Germany, `TZ` for Tanzania."
    AgentWithAccountDTO:
      required:
      - institutionIdentification
      type: object
      properties:
        institutionIdentification:
          $ref: "#/components/schemas/InstitutionIdentificationDTO"
        account:
          $ref: "#/components/schemas/AccountDTO"
      description: Financial institution servicing an account for the creditor. This
        field is mandatory when proprietary ('other') creditor account identification
        is used.
    AmendmentInformationDetailsDTO:
      type: object
      properties:
        originalMandateIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: "Unique identification, as assigned by the creditor, to unambiguously\
            \ identify the original mandate. Must not exceed 35 characters."
        originalCreditorSchemeIdentification:
          $ref: "#/components/schemas/OriginalCreditorSchemeIdentificationDTO"
        originalDebtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        originalDebtorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
      description: List of mandate elements that have been modified.
    AmountDTO:
      required:
      - amount
      - currency
      type: object
      properties:
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: ISO 4217 Alpha 3 currency code.
        amount:
          maxLength: 12
          minLength: 1
          type: string
          description: "The amount given with fractional digits, where fractions must\
            \ be compliant to the currency definition. Negative amounts are signed\
            \ by minus. The decimal separator is a dot."
    CollectionDTO:
      required:
      - creditorAccount
      - creditorName
      - creditorSchemeIdentification
      - debtorAccount
      - debtorName
      - instructedAmount
      - mandateRelatedInformation
      - paymentTypeInformation
      type: object
      properties:
        paymentIdentification:
          $ref: "#/components/schemas/PaymentIdentificationDTO"
        debtorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        debtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        debtorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        ultimateDebtor:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party that originally ordered goods or services and to
            whom the seller has sent the invoice. Ultimate Debtor can be used when
            the acceptor of the invoice is different than the payer. Must not exceed
            70 characters.
        debtorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The full name of the debtor. Must not exceed 70 characters.
        debtorAddress:
          $ref: "#/components/schemas/AddressDTO"
        serviceLevel:
          type: string
          description: Agreement under which or rules under which the transaction
            should be processed. Must be `SEPA` for SEPA Credit Transfers and Direct
            Debits.
        localInstrument:
          type: string
          description: "User community specific instrument. Used to specify a local\
            \ instrument, local clearing option and/or further qualify the service\
            \ or service level. For example, whether a Direct Debit uses the business\
            \ to customer `CORE`, business to business `B2B` ruleset or whether a\
            \ Credit Transfer is of type Instant `INST`."
        instructedAmount:
          $ref: "#/components/schemas/AmountDTO"
        creditorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        creditorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        creditorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party whose account is credited with the payment. Must
            not exceed 70 characters.
        creditorAddress:
          $ref: "#/components/schemas/AddressDTO"
        ultimateCreditor:
          maxLength: 70
          minLength: 1
          type: string
          description: "Party which is the ultimate beneficiary of the payment. For\
            \ example, the payment can be credited to an account of a financing company,\
            \ with the ultimate beneficiary being the customer of the financing company.\
            \ Must not exceed 70 characters."
        purposeCode:
          maxLength: 4
          minLength: 4
          type: string
          description: "The PurposeCode value or a similar explanation is not added\
            \ to the payer’s Electronic account statement. This value can be shown\
            \ on both the payers and the beneficiary’s on the Camt.053 account statement.\
            \ Purpose codes can be taken from an external list, for example the [ISO\
            \ 20022 External Code Set](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)."
        remittanceInformationUnstructured:
          maxLength: 140
          minLength: 1
          type: string
          description: |-
            Payment details. Free text, one occurrence (max 140 characters).
            Payment reason (according to current recurrent payment standard) can be given in this element.
        remittanceInformationStructured:
          $ref: "#/components/schemas/RemittanceDTO"
        requestedExecutionDate:
          maxLength: 10
          minLength: 10
          type: string
          description: Optional field for recording the date of the transfer. For
            SEPA Credit Transfers only the current date can be provided. Payments
            can not be backdated or scheduled for the future.
        requestedExecutionTime:
          maxLength: 35
          minLength: 17
          type: string
          description: "Optional field for recording the date and time of the payment\
            \ initiation. For SEPACredit Transfers, only the current date and time\
            \ can be provided. Payments can not be backdated or scheduled for the\
            \ future."
        categoryPurposeCode:
          maxLength: 4
          minLength: 1
          type: string
          description: Specifies the high level purpose of the payment based on a
            set of pre-defined categories.
        mandateRelatedInformation:
          $ref: "#/components/schemas/MandateDTO"
        paymentTypeInformation:
          $ref: "#/components/schemas/PaymentTypeInformationDTO"
        creditorSchemeIdentification:
          $ref: "#/components/schemas/CreditorSchemeIdentificationDTO"
    IdentificationDTO:
      type: object
      properties:
        iban:
          maxLength: 34
          minLength: 15
          type: string
          description: International Bank Account Number (IBAN) - identifier used
            internationally by financial institutions to uniquely identify the account
            of a customer. Must be between 15 and 34 characters.
        other:
          $ref: "#/components/schemas/OtherDTO"
      description: Unique and unambiguous identification for the account.
    InstitutionIdentificationDTO:
      required:
      - bicfi
      type: object
      properties:
        bicfi:
          maxLength: 11
          minLength: 8
          type: string
          description: ISO 9362 Business identifier code (BIC) - code allocated to
            a financial institution. Must be between 8 and 11 characters.
      description: "Unique and unambiguous identification of a financial institution,\
        \ as assigned under an internationally recognised identification scheme."
    MandateDTO:
      required:
      - dateOfSignature
      - mandateIdentification
      type: object
      properties:
        mandateIdentification:
          type: string
          description: "Unique identification, as assigned by the creditor, to unambiguously\
            \ identify the mandate."
        dateOfSignature:
          type: string
          description: Date on which the direct debit mandate has been signed by the
            debtor in the format `YYYY-MM-DD`.
        amendmentInformationDetails:
          $ref: "#/components/schemas/AmendmentInformationDetailsDTO"
      description: Set of elements used to provide further details of the direct debit
        mandate signed between the creditor and the debtor.
    OriginalCreditorSchemeIdentificationDTO:
      type: object
      properties:
        name:
          maxLength: 70
          minLength: 1
          type: string
          description: Name of the creditor. Must not exceed 70 characters.
        identification:
          $ref: "#/components/schemas/IdentificationDTO"
      description: Original creditor scheme identification that has been modified.
    OtherDTO:
      required:
      - identification
      - scheme
      type: object
      properties:
        identification:
          maxLength: 34
          minLength: 1
          type: string
          description: Identification assigned by an institution. Must not exceed
            34 characters.
        scheme:
          maxLength: 35
          minLength: 1
          type: string
          description: Name or code of the identification scheme. Must not exceed
            35 characters.
      description: "Unique identification of an account, as assigned by the account\
        \ servicer, using any other identification scheme."
    PartyIdentificationDTO:
      required:
      - privateIdentification
      type: object
      properties:
        privateIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: "Unique and unambiguous identification of a person, eg, passport.\
            \ Must not exceed 35 characters."
        proprietary:
          maxLength: 35
          minLength: 1
          type: string
          description: A proprietary type of identification for the party to the transaction.
            Must not exceed 35 characters.
        code:
          maxLength: 4
          minLength: 1
          type: string
          description: "A four-letter code specifying the type of identification being\
            \ used. For valid codes an external catalogue should be consulted such\
            \ as the one provided in the [ISO 20022 External Code Sets](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)."
        issuer:
          maxLength: 35
          minLength: 1
          type: string
          description: The official body who provided the identification. Must not
            exceed 35 characters.
      description: Beneficiary’s identification.
    PaymentIdentificationDTO:
      type: object
      properties:
        transactionIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: "Unique identification as assigned by the initiating party\
            \ to be used as transaction identifier. If left empty, Mambu transaction\
            \ id will be used. Must not exceed 35 characters."
        endToEndIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: Unique identification assigned by the payer to identify the
            transaction. This identification will be returned to the payer and passed
            on to the beneficiary. Must not exceed 35 characters.
      description: Payment instruction reference.
    PaymentTypeInformationDTO:
      required:
      - sequenceType
      type: object
      properties:
        sequenceType:
          type: string
          description: "Identifies the direct debit sequence, such as first, recurrent,\
            \ final or one-off (`FRST`, `RCUR`, `FNAL`, `OOFF`)."
      description: Set of elements used to further specify the type of transaction.
    RemittanceDTO:
      required:
      - reference
      type: object
      properties:
        reference:
          maxLength: 35
          minLength: 1
          type: string
          description: "The actual reference. Must not exceed 35 characters. If providing\
            \ a reference number, the `referenceType` should also be provided."
        referenceType:
          maxLength: 35
          minLength: 1
          type: string
          description: The type of reference provided. Must not exceed 35 characters.
        referenceIssuer:
          maxLength: 35
          minLength: 1
          type: string
          description: The entity which created or generated the reference. Must not
            exceed 35 characters.
      description: "Payment details. Structured message. Generally, these fields are\
        \ used to provide invoice or creditor reference information. References should\
        \ conform to ISO 11649, international standard of reference information."
    LogRequest:
      required:
      - log
      type: object
      properties:
        log:
          maxLength: 300
          minLength: 1
          type: string
    AgentDTO:
      required:
      - institutionIdentification
      type: object
      properties:
        institutionIdentification:
          $ref: "#/components/schemas/InstitutionIdentificationDTO"
      description: Agent that is instructed by the previous party in the chain to
        carry out the (set of) instruction(s).
    FinancialInstitutionPaymentDTO:
      required:
      - creditor
      - debtor
      - instructedAgent
      - instructedAmount
      - settlementInformation
      type: object
      properties:
        paymentIdentification:
          $ref: "#/components/schemas/Iso20022PaymentIdentificationDTO"
        categoryPurposeCode:
          maxLength: 4
          minLength: 1
          type: string
          description: Specifies the high level purpose of the payment based on a
            set of pre-defined categories.
        settlementInformation:
          $ref: "#/components/schemas/SettlementInformationDTO"
        instructedAgent:
          $ref: "#/components/schemas/AgentDTO"
        debtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        debtor:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        debtorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        ultimateDebtor:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party that originally ordered goods or services and to
            whom the seller has sent the invoice. Ultimate Debtor can be used when
            the acceptor of the invoice is different than the payer. Must not exceed
            70 characters.
        instructedAmount:
          $ref: "#/components/schemas/AmountDTO"
        intermediaryAgent1:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        intermediaryAgent2:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        intermediaryAgent3:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        creditorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditor:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        creditorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        ultimateCreditor:
          maxLength: 70
          minLength: 1
          type: string
          description: "Party which is the ultimate beneficiary of the payment. For\
            \ example, the payment can be credited to an account of a financing company,\
            \ with the ultimate beneficiary being the customer of the financing company.\
            \ Must not exceed 70 characters."
        purposeCode:
          maxLength: 4
          minLength: 4
          type: string
          description: "The PurposeCode value or a similar explanation is not added\
            \ to the payer’s Electronic account statement. This value can be shown\
            \ on both the payers and the beneficiary’s on the Camt.053 account statement.\
            \ Purpose codes can be taken from an external list, for example the [ISO\
            \ 20022 External Code Set](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)."
        remittanceInformationUnstructured:
          maxLength: 140
          minLength: 1
          type: string
          description: |-
            Payment details. Free text, one occurrence (max 140 characters).
            Payment reason (according to current recurrent payment standard) can be given in this element.
        remittanceInformationStructured:
          $ref: "#/components/schemas/RemittanceDTO"
        requestedExecutionDate:
          maxLength: 10
          minLength: 10
          type: string
          description: Optional field for recording the date of the transfer. Payments
            can not be backdated or scheduled for the future.
    Iso20022PaymentIdentificationDTO:
      type: object
      properties:
        transactionIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: "Unique identification as assigned by the initiating party\
            \ to be used as transaction identifier. If left empty, Mambu transaction\
            \ id will be used. Must not exceed 35 characters."
        endToEndIdentification:
          maxLength: 35
          minLength: 1
          type: string
          description: Unique identification assigned by the payer to identify the
            transaction. This identification will be returned to the payer and passed
            on to the beneficiary. Must not exceed 35 characters.
        uetr:
          maxLength: 36
          minLength: 36
          type: string
          description: Universally unique identifier to provide an end-to-end reference
            of a payment transaction.
    SettlementInformationDTO:
      required:
      - settlementMethod
      type: object
      properties:
        settlementMethod:
          type: string
          description: "Method used to settle the payment: INDA (instructed agent),\
            \ INGA (instructing agent), CLRG (clearing system)"
        settlementAccount:
          $ref: "#/components/schemas/AccountDTO"
        clearingSystem:
          type: string
          description: Clearing system when settlement method is CLRG.
      description: Specifies the details on how the settlement of the transaction(s)
        between the instructing agent and the instructed agent is completed.
    Iso20022PaymentDTO:
      required:
      - creditorAccount
      - creditorName
      - debtorAccount
      - debtorName
      - instructedAmount
      - scheme
      - settlementInformation
      type: object
      properties:
        paymentIdentification:
          $ref: "#/components/schemas/Iso20022PaymentIdentificationDTO"
        debtorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        debtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        debtorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        ultimateDebtor:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party that originally ordered goods or services and to
            whom the seller has sent the invoice. Ultimate Debtor can be used when
            the acceptor of the invoice is different than the payer. Must not exceed
            70 characters.
        debtorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The full name of the debtor. Must not exceed 70 characters.
        debtorAddress:
          $ref: "#/components/schemas/AddressDTO"
        serviceLevel:
          type: string
          description: Agreement under which or rules under which the transaction
            should be processed. Must be `SEPA` for SEPA Credit Transfers and Direct
            Debits.
        localInstrument:
          type: string
          description: "User community specific instrument. Used to specify a local\
            \ instrument, local clearing option and/or further qualify the service\
            \ or service level. For example, whether a Direct Debit uses the business\
            \ to customer `CORE`, business to business `B2B` ruleset or whether a\
            \ Credit Transfer is of type Instant `INST`."
        instructedAmount:
          $ref: "#/components/schemas/AmountDTO"
        creditorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        creditorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        creditorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party whose account is credited with the payment. Must
            not exceed 70 characters.
        creditorAddress:
          $ref: "#/components/schemas/AddressDTO"
        ultimateCreditor:
          maxLength: 70
          minLength: 1
          type: string
          description: "Party which is the ultimate beneficiary of the payment. For\
            \ example, the payment can be credited to an account of a financing company,\
            \ with the ultimate beneficiary being the customer of the financing company.\
            \ Must not exceed 70 characters."
        purposeCode:
          maxLength: 4
          minLength: 4
          type: string
          description: "The PurposeCode value or a similar explanation is not added\
            \ to the payer’s Electronic account statement. This value can be shown\
            \ on both the payers and the beneficiary’s on the Camt.053 account statement.\
            \ Purpose codes can be taken from an external list, for example the [ISO\
            \ 20022 External Code Set](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)."
        remittanceInformationUnstructured:
          maxLength: 140
          minLength: 1
          type: string
          description: |-
            Payment details. Free text, one occurrence (max 140 characters).
            Payment reason (according to current recurrent payment standard) can be given in this element.
        remittanceInformationStructured:
          $ref: "#/components/schemas/RemittanceDTO"
        requestedExecutionDate:
          maxLength: 10
          minLength: 10
          type: string
          description: Optional field for recording the date of the transfer. For
            SEPA Credit Transfers only the current date can be provided. Payments
            can not be backdated or scheduled for the future.
        requestedExecutionTime:
          maxLength: 35
          minLength: 17
          type: string
          description: "Optional field for recording the date and time of the payment\
            \ initiation. For SEPACredit Transfers, only the current date and time\
            \ can be provided. Payments can not be backdated or scheduled for the\
            \ future."
        categoryPurposeCode:
          maxLength: 4
          minLength: 1
          type: string
          description: Specifies the high level purpose of the payment based on a
            set of pre-defined categories.
        scheme:
          type: string
          description: Specifies payment scheme for processing.
        settlementInformation:
          $ref: "#/components/schemas/SettlementInformationDTO"
    PaymentResponse:
      required:
      - paymentId
      - transactionStatus
      type: object
      properties:
        transactionStatus:
          type: string
          description: "PSD2 transaction status codes:<ul><li>ACSC: Settlement on\
            \ the debtor’s account has been completed.<br> <b>Usage</b>: this can\
            \ be used by the first agent to report to the debtor that the transaction\
            \ has been completed.<br> <b>Warning</b>: this status is provided for\
            \ reporting techincal transaction status, not for financial information.\
            \ It can only be used after bilateral agreement.</li><li>ACSP: All preceding\
            \ checks such as technical validation and customer profile were successful.\
            \ The payment initiation has been accepted for execution.</li><li>ACTC:\
            \ Authentication, syntactical and semantical validation are successful.</li><li>CPVP:\
            \ The previous technical validation was successful. The customer profile\
            \ validation has started. Only used for Anti Money Laundering flows.</li><li>RCVD:\
            \ Payment initiation has been received by the receiving agent.</li><li>PDNG:\
            \ Payment initiation, or an individual transaction included in the payment\
            \ initiation is pending. Further checks and status updates will be performed.</li><li>RJCT:\
            \ Payment initiation, or an individual transaction included in the payment\
            \ initiation has been rejected.</li></ul>"
          enum:
          - ACSC
          - ACSP
          - ACTC
          - CPVP
          - RCVD
          - PDNG
          - RJCT
        paymentId:
          type: string
          description: Resource identification of the generated payment initiation
            resource.
        transactionFeeIndicator:
          type: boolean
          description: "If value is `true`, the transaction will involve additional\
            \ transaction costs or fees."
        tppMessages:
          type: array
          description: Messages to the TPP on operational issues.
          items:
            $ref: "#/components/schemas/TPPMessage"
    InitiationPaymentDTO:
      required:
      - creditorAccount
      - creditorName
      - debtorAccount
      - debtorName
      - instructedAmount
      type: object
      properties:
        paymentIdentification:
          $ref: "#/components/schemas/PaymentIdentificationDTO"
        debtorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        debtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        debtorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        ultimateDebtor:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party that originally ordered goods or services and to
            whom the seller has sent the invoice. Ultimate Debtor can be used when
            the acceptor of the invoice is different than the payer. Must not exceed
            70 characters.
        debtorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The full name of the debtor. Must not exceed 70 characters.
        debtorAddress:
          $ref: "#/components/schemas/AddressDTO"
        serviceLevel:
          type: string
          description: Agreement under which or rules under which the transaction
            should be processed. Must be `SEPA` for SEPA Credit Transfers and Direct
            Debits.
        localInstrument:
          type: string
          description: "User community specific instrument. Used to specify a local\
            \ instrument, local clearing option and/or further qualify the service\
            \ or service level. For example, whether a Direct Debit uses the business\
            \ to customer `CORE`, business to business `B2B` ruleset or whether a\
            \ Credit Transfer is of type Instant `INST`."
        instructedAmount:
          $ref: "#/components/schemas/AmountDTO"
        creditorIdentification:
          $ref: "#/components/schemas/PartyIdentificationDTO"
        creditorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditorAgent:
          $ref: "#/components/schemas/AgentWithAccountDTO"
        creditorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party whose account is credited with the payment. Must
            not exceed 70 characters.
        creditorAddress:
          $ref: "#/components/schemas/AddressDTO"
        ultimateCreditor:
          maxLength: 70
          minLength: 1
          type: string
          description: "Party which is the ultimate beneficiary of the payment. For\
            \ example, the payment can be credited to an account of a financing company,\
            \ with the ultimate beneficiary being the customer of the financing company.\
            \ Must not exceed 70 characters."
        purposeCode:
          maxLength: 4
          minLength: 4
          type: string
          description: "The PurposeCode value or a similar explanation is not added\
            \ to the payer’s Electronic account statement. This value can be shown\
            \ on both the payers and the beneficiary’s on the Camt.053 account statement.\
            \ Purpose codes can be taken from an external list, for example the [ISO\
            \ 20022 External Code Set](https://www.iso20022.org/catalogue-messages/additional-content-messages/external-code-sets)."
        remittanceInformationUnstructured:
          maxLength: 140
          minLength: 1
          type: string
          description: |-
            Payment details. Free text, one occurrence (max 140 characters).
            Payment reason (according to current recurrent payment standard) can be given in this element.
        remittanceInformationStructured:
          $ref: "#/components/schemas/RemittanceDTO"
        requestedExecutionDate:
          maxLength: 10
          minLength: 10
          type: string
          description: Optional field for recording the date of the transfer. For
            SEPA Credit Transfers only the current date can be provided. Payments
            can not be backdated or scheduled for the future.
        requestedExecutionTime:
          maxLength: 35
          minLength: 17
          type: string
          description: "Optional field for recording the date and time of the payment\
            \ initiation. For SEPACredit Transfers, only the current date and time\
            \ can be provided. Payments can not be backdated or scheduled for the\
            \ future."
        categoryPurposeCode:
          maxLength: 4
          minLength: 1
          type: string
          description: Specifies the high level purpose of the payment based on a
            set of pre-defined categories.
    StandingOrderExecutionResponse:
      type: object
      properties:
        standingOrderId:
          type: string
          description: Standing order id
        paymentOrderId:
          type: string
          description: Payment order id
        requestedExecuteOn:
          type: string
          description: Date and time at which payment is initiated
          format: date-time
        status:
          type: string
          description: Status of payment execution
          enum:
          - RUNNING
          - COMPLETED
          - FAILED
        creationDate:
          type: string
          description: Entry creation date and time
          format: date-time
        type:
          type: string
          description: Execution type
          enum:
          - REGULAR
          - RETRY
        failReason:
          type: string
          description: Holds short failure description
          enum:
          - INSUFFICIENT_FUNDS(null)
          - ACCOUNT_INACTIVE(null)
          - OTHER(null)
    StandingOrderCreateResponse:
      type: object
      properties:
        id:
          type: string
          description: Standing order id
    PaymentDTO:
      required:
      - creditorAccount
      - creditorName
      - debtorAccount
      - debtorName
      - instructedAmount
      type: object
      properties:
        scheme:
          type: string
          description: Specifies payment scheme for processing.
        instructedAmount:
          $ref: "#/components/schemas/AmountDTO"
        debtorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditorAccount:
          $ref: "#/components/schemas/AccountDTO"
        creditorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The Party whose account is credited with the payment. Must
            not exceed 70 characters.
        debtorName:
          maxLength: 70
          minLength: 1
          type: string
          description: The full name of the debtor. Must not exceed 70 characters.
        remittanceInformationUnstructured:
          maxLength: 140
          minLength: 1
          type: string
          description: |-
            Payment details. Free text, one occurrence (max 140 characters).
            Payment reason (according to current recurrent payment standard) can be given in this element.
        settlementInformation:
          $ref: "#/components/schemas/SettlementInformationDTO"
      description: Payment details for standing order
    RetryPolicyDTO:
      type: object
      properties:
        retryCount:
          type: integer
          description: Specifies how many times the failing standing order will be
            retried
          format: int32
      description: Failing standing orders retry policy
    StandingOrderDTO:
      required:
      - frequency
      - ownerId
      - payment
      - retryPolicy
      - startDate
      type: object
      properties:
        payment:
          $ref: "#/components/schemas/PaymentDTO"
        startDate:
          type: string
          description: Standing order start date
          format: date
        frequency:
          type: string
          description: Standing order frequency
          enum:
          - "DAILY, WEEKLY, MONTHLY"
        endDate:
          type: string
          description: Standing order end date
          format: date
        ownerId:
          maxLength: 36
          minLength: 1
          type: string
          description: Standing order owner id
        retryPolicy:
          $ref: "#/components/schemas/RetryPolicyDTO"
    StandingOrderGetResponse:
      type: object
      properties:
        id:
          type: string
          description: Standing order id
        payment:
          $ref: "#/components/schemas/PaymentDTO"
        startDate:
          type: string
          description: Standing order start date
          format: date
        frequency:
          type: string
          description: Standing order frequency
          enum:
          - "DAILY, WEEKLY, MONTHLY"
        endDate:
          type: string
          description: Standing order end date
          format: date
        creationDateTime:
          type: string
          description: Standing order creation date and time
          format: date-time
        status:
          type: string
          description: Standing order status
          enum:
          - ACTIVE
          - SUSPENDED
          - CANCELED
          - WITHDRAWN
        lastExecution:
          type: string
          description: Standing order's last payment execution date
          format: date
        nextExecution:
          type: string
          description: Standing order's next payment execution date
          format: date
        paymentsCount:
          type: integer
          description: Standing order's count of payments executed so far
          format: int32
        ownerId:
          type: string
          description: Standing order owner id
        retryCount:
          type: integer
          description: Standing order's retry count setting
          format: int32
        suspendDateFrom:
          type: string
          description: Standing order suspend start date
          format: date
        suspendDateTo:
          type: string
          description: Standing order suspend end date (inclusive)
          format: date
    StandingOrderSearchResponse:
      type: object
      properties:
        id:
          type: string
          description: Standing order id
        payment:
          $ref: "#/components/schemas/PaymentDTO"
        startDate:
          type: string
          description: Standing order start date
          format: date
        frequency:
          type: string
          description: Standing order frequency
          enum:
          - "DAILY, WEEKLY, MONTHLY"
        endDate:
          type: string
          description: Standing order end date
          format: date
        creationDateTime:
          type: string
          description: Standing order creation date and time
          format: date-time
        status:
          type: string
          description: Standing order status
          enum:
          - ACTIVE
          - SUSPENDED
          - CANCELED
          - WITHDRAWN
        ownerId:
          type: string
          description: Standing order owner id
        retryCount:
          type: integer
          description: Standing order's retry count setting
          format: int32
        suspendDateFrom:
          type: string
          description: Standing order suspend start date
          format: date
        suspendDateTo:
          type: string
          description: Standing order suspend end date (inclusive)
          format: date
    FilterCriteria:
      required:
      - field
      - operator
      - value
      type: object
      properties:
        field:
          type: string
        operator:
          type: string
        value:
          type: string
    StandingOrderSearchRequest:
      required:
      - filterCriteria
      type: object
      properties:
        limit:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
        offset:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
        filterCriteria:
          maxItems: 2
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/FilterCriteria"
    StandingOrderSuspendDTO:
      required:
      - endDate
      - id
      type: object
      properties:
        id:
          maxLength: 36
          minLength: 1
          type: string
          description: Standing order id
        startDate:
          type: string
          description: Suspend standing order from date
          format: date
        endDate:
          type: string
          description: Suspend standing order till date (inclusive)
          format: date
