openapi: 3.0.0
info:
  description: >
    This is the specification of the bLink 'payments-submission-service' module
    API. (as implemented by SIX and used by clients (e.g. third party
    providers)) 
  version: 5.0.0.1-SNAPSHOT-six
  title: bLink API - payments-submission-service module
  contact:
    name: SIX BBS AG
    url: https://www.six-group.com/en/products-services/banking-services/blink.html
servers:
  - url: >-
      https://api.six-group.com/api/bankingservices/b-link-consent-2/payments-submission-service/v5
paths:
  /payments:
    post:
      tags:
        - payments
      summary: Submit payment instructions
      description: Create new payments submission.
      operationId: submitPaymentInstructions
      parameters:
        - $ref: '#/components/parameters/authorization_in_header'
        - $ref: '#/components/parameters/correlation_in_header'
        - $ref: '#/components/parameters/agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/psu_ip_in_header'
        - $ref: '#/components/parameters/psu_user_agent_in_header'
      requestBody:
        required: true
        description: Payment instruction details as defined by data model.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentSubmissionRequest'
      responses:
        '201':
          description: Created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSubmissionResponse'
        '400':
          $ref: '#/components/responses/standard400'
        '401':
          $ref: '#/components/responses/standard401'
        '403':
          $ref: '#/components/responses/standard403'
        '404':
          $ref: '#/components/responses/standard404'
        '405':
          $ref: '#/components/responses/standard405'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
  /payments/{submissionId}/status:
    get:
      tags:
        - payments
      summary: Retrieve payment submission status information
      description: Retrieve a specific payment submission's status.
      operationId: retrievePaymentSubmissionStatus
      parameters:
        - $ref: '#/components/parameters/submission_id_in_path'
        - $ref: '#/components/parameters/authorization_in_header'
        - $ref: '#/components/parameters/correlation_in_header'
        - $ref: '#/components/parameters/agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/psu_ip_in_header'
        - $ref: '#/components/parameters/psu_user_agent_in_header'
      responses:
        '200':
          description: Status information for the specific payment submission
          headers:
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSubmissionStatus'
        '400':
          $ref: '#/components/responses/standard400'
        '401':
          $ref: '#/components/responses/standard401'
        '403':
          $ref: '#/components/responses/standard403'
        '404':
          $ref: '#/components/responses/standard404'
        '405':
          $ref: '#/components/responses/standard405'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
  /iso20022/payments:
    post:
      tags:
        - iso20022
      summary: Submit ISO20022 XML payment instruction (PAIN.001)
      description: >
        Submit an XML pain.001 payment instruction according to the ISO20022
        specification.
          * bLink supports payment instructions only in XML-Schema «pain.001.001.09».
      operationId: submitIso20022PaymentInstruction
      parameters:
        - $ref: '#/components/parameters/authorization_in_header'
        - $ref: '#/components/parameters/correlation_in_header'
        - $ref: '#/components/parameters/agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/psu_ip_in_header'
        - $ref: '#/components/parameters/psu_user_agent_in_header'
      requestBody:
        required: true
        description: Payment instruction details as defined by data model.
        content:
          application/xml:
            schema:
              type: string
              format: binary
      responses:
        '201':
          description: Created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSubmissionResponse'
        '202':
          description: Accepted but the resource is not yet created.
          headers:
            Location:
              $ref: '#/components/headers/Location'
            ExpectedDurationInSeconds:
              $ref: '#/components/headers/ExpectedDurationInSeconds'
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentSubmissionRequest'
        '400':
          $ref: '#/components/responses/standard400'
        '401':
          $ref: '#/components/responses/standard401'
        '403':
          $ref: '#/components/responses/standard403'
        '404':
          $ref: '#/components/responses/standard404'
        '405':
          $ref: '#/components/responses/standard405'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
  /iso20022/payments/{submissionId}/status:
    get:
      tags:
        - iso20022
      summary: Retrieve ISO20022 XML status report of a payment instruction (PAIN.002)
      description: >
        Retrieve the status report for the requested XML ISO20022 payment
        instruction (PAIN.002).
          * bLink supports status reports only in XML-Schema «pain.002.001.10».
      operationId: retrieveIso20022PaymentInstructionStatusReport
      parameters:
        - $ref: '#/components/parameters/submission_id_in_path'
        - $ref: '#/components/parameters/authorization_in_header'
        - $ref: '#/components/parameters/correlation_in_header'
        - $ref: '#/components/parameters/agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/psu_ip_in_header'
        - $ref: '#/components/parameters/psu_user_agent_in_header'
      responses:
        '200':
          description: Returns the requested ISO20022 XML pain.002 message.
          headers:
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/xml:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/standard400'
        '401':
          $ref: '#/components/responses/standard401'
        '403':
          $ref: '#/components/responses/standard403'
        '404':
          $ref: '#/components/responses/standard404'
        '405':
          $ref: '#/components/responses/standard405'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
  /consents:
    get:
      tags:
        - consents
      summary: Retrieve a list of consents
      description: >
        The consents endpoint allows the client (e.g., a third party provider)
        to query the consents for a given user. The provider (e.g., a financial
        institution) must return the consents linked with the access token
        supplied with the request.
      operationId: retrieveConsents
      parameters:
        - $ref: '#/components/parameters/cursor_in_query'
        - $ref: '#/components/parameters/limit_in_query'
        - $ref: '#/components/parameters/authorization_in_header'
        - $ref: '#/components/parameters/correlation_in_header'
        - $ref: '#/components/parameters/agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/psu_ip_in_header'
        - $ref: '#/components/parameters/psu_user_agent_in_header'
      responses:
        '200':
          description: List of consents
          headers:
            X-Correlation-ID:
              $ref: '#/components/headers/X-Correlation-ID'
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
            X-Next-Cursor:
              $ref: '#/components/headers/X-Next-Cursor'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ConsentAccountItem'
        '400':
          $ref: '#/components/responses/standard400'
        '401':
          $ref: '#/components/responses/standard401'
        '403':
          $ref: '#/components/responses/standard403'
        '404':
          $ref: '#/components/responses/standard404'
        '405':
          $ref: '#/components/responses/standard405'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
  /healthcheck:
    get:
      tags:
        - diagnostics
      summary: >-
        Returns all specified request headers and additional diagnostic
        information
      operationId: healthCheckGet
      parameters:
        - $ref: '#/components/parameters/optional_correlation_in_header'
        - $ref: '#/components/parameters/optional_agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/optional_psu_ip_in_header'
        - $ref: '#/components/parameters/optional_psu_user_agent_in_header'
        - $ref: '#/components/parameters/optional_psu_accept_lang_in_header'
      responses:
        '200':
          description: Health Check Response
          headers:
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckResponse'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
    post:
      tags:
        - diagnostics
      summary: >-
        Returns all specified request headers, the request body and additional
        diagnostic information
      operationId: healthCheckPost
      parameters:
        - $ref: '#/components/parameters/optional_correlation_in_header'
        - $ref: '#/components/parameters/optional_agent_in_header'
        - $ref: '#/components/parameters/target_id_in_header'
        - $ref: '#/components/parameters/optional_psu_ip_in_header'
        - $ref: '#/components/parameters/optional_psu_user_agent_in_header'
        - $ref: '#/components/parameters/optional_psu_accept_lang_in_header'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
      responses:
        '200':
          description: Health Check Response
          headers:
            X-CorAPI-Source:
              $ref: '#/components/headers/X-CorAPI-Source'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckResponse'
        '500':
          $ref: '#/components/responses/standard500'
        '501':
          $ref: '#/components/responses/standard501'
        '502':
          $ref: '#/components/responses/standard502'
        '503':
          $ref: '#/components/responses/standard503'
        '504':
          $ref: '#/components/responses/standard504'
components:
  schemas:
    PaymentSubmissionRequest:
      title: Payment Submission Request
      description: The payment submission request object.
      type: object
      required:
        - bookingInstruction
        - debtorAccount
        - initiatingPartyId
        - messageId
        - requestedExecutionDate
        - transactions
      properties:
        bookingInstruction:
          $ref: '#/components/schemas/PaymentBookingInstruction'
        debtorAccount:
          $ref: '#/components/schemas/PaymentIbanAccount'
        initiatingPartyId:
          $ref: '#/components/schemas/InitiatingPartyId'
        messageId:
          $ref: '#/components/schemas/MessageId'
        requestedExecutionDate:
          $ref: '#/components/schemas/Date'
        transactions:
          type: array
          description: The transaction items.
          items:
            $ref: '#/components/schemas/PaymentInstructionItem'
    PaymentSubmissionResponse:
      title: Payment Submission Response (200)
      description: The payment submission response object.
      type: object
      properties:
        submissionId:
          $ref: '#/components/schemas/SubmissionId'
    PaymentInstructionItem:
      title: Payment Instruction Item
      description: The payment instruction item object.
      type: object
      required:
        - endToEndId
        - instructedAmount
        - instructionId
      properties:
        endToEndId:
          $ref: '#/components/schemas/EndToEndId'
        instructedAmount:
          $ref: '#/components/schemas/PaymentCurrencyAmount'
        instructionId:
          $ref: '#/components/schemas/InstructionId'
        ibanDetails:
          $ref: '#/components/schemas/PaymentIbanDetail'
        otherDetails:
          $ref: '#/components/schemas/PaymentOtherDetail'
        qrDetails:
          $ref: '#/components/schemas/PaymentQrDetail'
        uetr:
          $ref: '#/components/schemas/Uetr'
    PaymentIbanDetail:
      title: Payment IBAN Detail
      description: Details of an IBAN payment.
      type: object
      required:
        - creditor
        - creditorAccount
      properties:
        chargeBearer:
          $ref: '#/components/schemas/PaymentChargeBearerMethod'
        creditor:
          $ref: '#/components/schemas/PaymentCreditor'
        creditorAccount:
          $ref: '#/components/schemas/PaymentIbanAccount'
        creditorAgent:
          $ref: '#/components/schemas/PaymentCreditorAgent'
        remittanceInformation:
          $ref: '#/components/schemas/PaymentRemittanceInformation'
        remittanceReference:
          $ref: '#/components/schemas/PaymentIbanRemittanceReference'
        sepaIndicator:
          type: boolean
          description: >-
            Indicates if payment is a SEPA payment or not. Corresponds to the
            attribute _InstrPrty ⇾ SvcLvl ⇾ Cd_ in SPS/ISO-20022.
          example: true
    PaymentOtherDetail:
      title: Payment Other Detail
      type: object
      required:
        - creditor
        - creditorAccount
        - creditorAgent
      properties:
        creditor:
          $ref: '#/components/schemas/PaymentCreditor'
        creditorAccount:
          $ref: '#/components/schemas/PaymentOtherAccount'
        creditorAgent:
          $ref: '#/components/schemas/PaymentCreditorAgent'
        chargeBearer:
          $ref: '#/components/schemas/PaymentChargeBearerMethod'
        remittanceReference:
          $ref: '#/components/schemas/PaymentOtherRemittanceReference'
        remittanceInformation:
          $ref: '#/components/schemas/PaymentRemittanceInformation'
    PaymentQrDetail:
      title: Payment QR Detail
      description: Details of a QR payment.
      type: object
      required:
        - creditor
        - creditorAccount
      properties:
        creditor:
          $ref: '#/components/schemas/PaymentCreditor'
        creditorAccount:
          $ref: '#/components/schemas/PaymentQrIbanAccount'
        remittanceInformation:
          $ref: '#/components/schemas/PaymentRemittanceInformation'
        remittanceReference:
          $ref: '#/components/schemas/PaymentIbanRemittanceReference'
        ultimateCreditor:
          $ref: '#/components/schemas/PaymentCreditor'
        ultimateDebtor:
          $ref: '#/components/schemas/PaymentDebtor'
    PaymentCreditor:
      title: Payment Creditor
      description: The creditor of a payment.
      type: object
      required:
        - name
        - postalAddress
      properties:
        name:
          type: string
          maxLength: 140
          description: >-
            The name of the creditor of a payment. Restriction for payment type
            SEPA is 70 characters.
          example: Hans Muster
        postalAddress:
          $ref: '#/components/schemas/PaymentPostalAddress'
    PaymentDebtor:
      title: Payment Debtor
      description: The debtor of a payment.
      type: object
      required:
        - name
        - postalAddress
      properties:
        name:
          type: string
          maxLength: 140
          description: >-
            The name of the debtor of a payment. Restriction for payment type
            SEPA is 70 characters.
          example: Hans Muster
        postalAddress:
          $ref: '#/components/schemas/PaymentPostalAddress'
    PaymentChargeBearerMethod:
      title: Payment Charge Bearer Method
      description: >
        The payment charge bearer method, i.e. who is responsible for paying the
        transaction fees associated with a payment. Corresponds to the attribute
        _SvcLvl ⇾ Cd_ in SPS/ISO-20022. Possible methods are: - DEBT (debtor) -
        CRED (creditor) - SHAR (shared) - SLEV (service level)
      type: string
      enum:
        - DEBT
        - CRED
        - SHAR
        - SLEV
      example: SHAR
    PaymentBookingInstruction:
      title: Payment Booking Instruction
      description: >
        The payment booking instruction, i.e. the method for processing and
        grouping a payment. Corresponds to the attribute _DbtrAcct ⇾ Tp ⇾ Prtry_
        in SPS/ISO-20022. Possible methods are:

        - SINGLEBOOKING_SIA

        - SINGLEBOOKING_NOA

        - BATCHBOOKING_SALA_NOA

        - BATCHBOOKING_SALA_CND

        - BATCHBOOKING_NOA

        - BATCHBOOKING_CND

        - BATCHBOOKING_CWD
      type: string
      enum:
        - SINGLEBOOKING_SIA
        - SINGLEBOOKING_NOA
        - BATCHBOOKING_SALA_NOA
        - BATCHBOOKING_SALA_CND
        - BATCHBOOKING_NOA
        - BATCHBOOKING_CND
        - BATCHBOOKING_CWD
      example: BATCHBOOKING_SALA_CND
    Uetr:
      description: >-
        Globally unique reference Reference assigned by the debtor (optional) or
        by the debtor agent. Corresponds to the attribute _CdtTrfTxInf ⇾ PmtId ⇾
        UETR_ in SPS/ISO-20022.
      type: string
      pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$
      example: fdc01a3e-4567-4abc-8def-1234567890ab
    PaymentSubmissionStatus:
      title: Payment Submission Status
      description: The payment submission status.
      type: object
      required:
        - statusCode
      properties:
        statusCode:
          type: string
          description: >
            The status of the payment. Corresponds to the attribute _TxSts_ in
            SPS/ISO-20022. Possible status values are:

            - ACCP (accepted)

            - RJCT (rejected)

            - PART (partially accepted)

            - RCVD (received)
          enum:
            - ACCP
            - RJCT
            - PART
            - RCVD
          example: PART
        messageId:
          $ref: '#/components/schemas/MessageId'
        transactions:
          type: array
          description: The payment transaction items.
          items:
            $ref: '#/components/schemas/PaymentInstructionItemStatus'
    PaymentInstructionItemStatus:
      title: Payment Instruction Item Status
      description: The status of the payment instruction item.
      type: object
      required:
        - instructionId
        - statusCode
      properties:
        instructionId:
          $ref: '#/components/schemas/InstructionId'
        statusCode:
          type: string
          description: >
            The status of the payment. Corresponds to the attribute _TxSts_ in
            SPS/ISO-20022. Possible status values are:

            - ACCP (accepted)

            - RJCT (rejected)
          enum:
            - ACCP
            - RJCT
          example: RJCT
        reasonCode:
          type: string
          description: >-
            The reason code for the instruction item. Corresponds to the
            attribute _StsRsnInf_ in SPS/ISO-20022.
          example: CURR
        reasonInformation:
          type: string
          maxLength: 105
          description: >-
            The reason information for the instruction item. Corresponds to the
            attribute _StsRsnInf ⇾ Rsn ⇾ Prtry_ in SPS/ISO-20022.
          example: currency USD not allowed for payment type IBAN
    PaymentCreditorAgent:
      type: object
      properties:
        bic:
          type: string
          minLength: 8
          maxLength: 11
          description: >
            The bank identifier code (BIC) of the creditor agent of a payment.
            Corresponds to the attribute _CdtrAgt ⇾ FinInstnId ⇾ BIC_ in
            SPS/ISO-20022. The BIC is an 8 or 11-character code that breaks down
            as follows: - First 4 characters - bank code (letters only) - Next 2
            characters - ISO 3166-1 alpha-2 country code (letters only) - Next 2
            characters - location code (letters and digits) - Last 3 characters
            (optional) - branch code, specifying a particular branch of the bank
            (letters and digits)
          example: DEUTDE5M101
        clearingSystemMemberIdentification:
          $ref: '#/components/schemas/CommonClearingSystemMemberIdentification'
    PaymentIbanAccount:
      title: Payment IBAN Account
      description: The IBAN account object.
      type: object
      required:
        - identification
        - type
      properties:
        identification:
          $ref: '#/components/schemas/IbanIdentification'
        type:
          type: string
          description: >-
            The allowed account identification type for the creditor account
            depends on the payment type. The debtor account must always be an
            IBAN.
          enum:
            - IBAN
          example: IBAN
    IbanIdentification:
      description: >-
        The International Bank Account Number (IBAN), associated with the
        account.
      type: string
      maxLength: 34
      pattern: ^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$
      example: CH5481230000001998736
    EndToEndId:
      description: >-
        The endToEndId of the instruction item. Corresponds to the attribute
        _EndToEndId_ in SPS/ISO-20022.
      type: string
      maxLength: 35
      example: ENDTOENDID-001
    InitiatingPartyId:
      description: >-
        The identifier of the third party provider (TPP) who created the payment
        instruction message derived from the OAuth 2.0 flow.
      type: string
      maxLength: 32
      example: TPP01746
    Amount:
      description: An amount. Corresponds to the attribute _Amt_ in SPS/ISO-20022.
      type: string
      maxLength: 18
      pattern: ^[0-9]{1,12}([.][0-9]{1,5})?$
      example: '10.25'
    Currency:
      description: >-
        The ISO currency three-letter code. Corresponds to the attribute _Ccy_
        in SPS/ISO-20022.
      type: string
      minLength: 3
      maxLength: 3
      example: CHF
    PaymentCurrencyAmount:
      title: Payment Currency-Amount
      description: Specifies the entry amount according to the account currency.
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        currency:
          $ref: '#/components/schemas/Currency'
    InstructionId:
      description: >-
        The unique identifier (UUID) of the instruction item. Corresponds to the
        attribute _InstrId_ in SPS/ISO-20022.
      type: string
      maxLength: 35
      example: INSTR-001
    MessageId:
      description: >-
        The unique identifier (UUID) of the the instruction message. Corresponds
        to the attribute _MsgId_ in SPS/ISO-20022.
      type: string
      maxLength: 35
      example: eb6305c91f7f49deaed016487c27b42d
    PaymentQrIbanAccount:
      title: Payment QR-IBAN Account
      description: The QR-IBAN account object.
      type: object
      required:
        - identification
        - type
      properties:
        identification:
          $ref: '#/components/schemas/IbanIdentification'
        type:
          type: string
          description: >-
            IBAN or QR-IBAN of the creditor, only IBANs with CH or LI country
            code permitted.
          enum:
            - IBAN
            - QR_IBAN
          example: IBAN
    PaymentOtherAccount:
      title: Payment Other Account
      description: The OTHER account object.
      type: object
      required:
        - identification
        - type
      properties:
        identification:
          type: string
          description: The unique identification (UUID) of the OTHER payment account.
          maxLength: 34
          example: 01-39139-1
        type:
          type: string
          description: The account identification type. Must always be OTHER.
          enum:
            - OTHER
    PaymentPostalAddress:
      title: Address for Payments
      description: >-
        The postal address of a participant within the payment. Corresponds to
        the attribute _PstlAdr_ in SPS/ISO-20022.
      type: object
      required:
        - country
        - townName
      properties:
        country:
          type: string
          maxLength: 2
          pattern: ^[A-Z]{2}$
          description: >-
            The ISO country two-letter code. Corresponds to the attribute _Ctry_
            in SPS/ISO-20022.
          example: CH
        townName:
          type: string
          maxLength: 35
          description: >-
            The town name. Corresponds to the attribute _TwnNm_ in
            SPS/ISO-20022.
          example: Biel
        addressLine1:
          type: string
          maxLength: 70
          description: >-
            Additional address information, which cannot be supplied in
            structured elements. Corresponds to the attribute _AdrLine_ in
            SPS/ISO-20022.
          example: Carribean At Keppel Bay
        addressLine2:
          type: string
          maxLength: 70
          description: >-
            Additional address information, which cannot be supplied in
            structured elements. Corresponds to the attribute _AdrLine_ in
            SPS/ISO-20022.
          example: 05-66
        buildingNumber:
          type: string
          maxLength: 16
          description: >-
            The building number. Corresponds to the attribute _BldgNb_ in
            SPS/ISO-20022.
          example: '24'
        postCode:
          type: string
          maxLength: 16
          description: >-
            The post code. Corresponds to the attribute _PstCd_ in
            SPS/ISO-20022.
          example: '2501'
        streetName:
          type: string
          maxLength: 70
          description: >-
            The street name. Corresponds to the attribute _StrtNm_ in
            SPS/ISO-20022.
          example: Rue de la gare
    PaymentIbanRemittanceReference:
      title: Payment Remittance Reference
      description: >
        The IBAN payment remittance reference. A specific code or number that is
        used to identify and track payment transactions. Either
        remittanceReference or remittanceInformation must be set.
      type: object
      properties:
        reference:
          $ref: '#/components/schemas/RemittanceReference'
        type:
          type: string
          description: >-
            The specific type of remittance reference. Either SCOR (Swiss QR
            Code Reference) or QRR (QR-Reference). Corresponds to the attribute
            _RmtInf ⇾ Strd ⇾ CdtrRefInf ⇾ Tp_ in SPS/ISO-20022.
          enum:
            - SCOR
            - QRR
          example: SCOR
    RemittanceReference:
      description: >-
        The reference number associated to the choosen remittance type.
        Corresponds to the attribute _RmtInf ⇾ Strd ⇾ CdtrRefInf ⇾ Ref_ in
        SPS/ISO-20022.
      type: string
      maxLength: 35
      example: '210000000003139471430009017'
    PaymentOtherRemittanceReference:
      title: Payment Remittance Reference
      description: >
        The OTHER payment remittance reference. A specific code or number that
        is used to identify and track payment transactions. Either
        remittanceReference or remittanceInformation must be set.
      type: object
      properties:
        reference:
          $ref: '#/components/schemas/RemittanceReference'
        type:
          type: string
          description: >-
            The specific type of remittance reference. Has to be SCOR (Swiss QR
            Code Reference).
          enum:
            - SCOR
          example: SCOR
    PaymentRemittanceInformation:
      title: Payment Remittance Information
      description: >-
        Either remittanceReference or remittanceInformation must be set.
        Correspond to the attribute _RmtInf ⇾ Ustrd_ in SPS/ISO-20022.
      type: string
      maxLength: 140
      example: Rechnung Nr. 408
    CommonClearingSystemMemberIdentification:
      title: Common Clearing System Member Identification
      description: >-
        Specifies the Information used to identify a member within a clearing
        system.
      type: object
      required:
        - code
        - memberId
      properties:
        code:
          type: string
          maxLength: 5
          description: >-
            Identification code of a clearing system. Only "CHBCC" is permitted
            inSwitzerland. Corresponds to the attribute _ClrSysId ⇾ Cd_ in
            SPS/ISO-20022.
          example: CHBCC
        memberId:
          type: string
          maxLength: 35
          description: >-
            The identification of a clearing system member. Clearing ID (Bank
            Code, "National Identifier") of the financial institution.
            Corresponds to the attribute _ClrSysId ⇾ MmbId_ in SPS/ISO-20022.
          example: 230
    SubmissionId:
      title: Submission ID
      description: ID of payment submission to be retrieved.
      type: string
      maxLength: 35
      example: 618d4ac6e8a64e3d9f26aa3d8c4f323e
    Date:
      title: Date
      description: A date.
      type: string
      format: date
      example: '2018-04-13'
    CommonErrorResponse:
      title: Common Error Response
      description: The common error response object.
      type: object
      required:
        - detail
        - title
        - type
      properties:
        detail:
          type: string
          description: The details about the common error response.
          example: Detailed problem description with respect to the current request
        title:
          type: string
          description: The title of the common error response.
          example: This is the general problem description
        type:
          $ref: '#/components/schemas/CommonErrorType'
        instance:
          type: string
          description: The path to the corresponding resource.
          example: path/to/corresponding/resource
    CommonErrorType:
      title: Common Error Type
      description: Error Types for commonErrorResponse.
      type: string
      enum:
        - /problems/INVALID_PAYLOAD
        - /problems/MALFORMED_PAYLOAD
        - /problems/INVALID_TOKEN
        - /problems/EXPIRED_TOKEN
        - /problems/INSUFFICIENT_PRIVILEGES
        - /problems/NO_ACCESS_TO_RESOURCE
        - /problems/RESOURCE_DOES_NOT_EXIST
        - /problems/RESOURCE_NOT_READY
        - /problems/RESOURCE_TOO_LARGE
        - /problems/WRONG_METHOD
        - /problems/OPERATION_NOT_ALLOWED
        - /problems/TECHNICAL_ERROR
        - /problems/NOT_IMPLEMENTED
      example: /problems/TECHNICAL_ERROR
    ConsentAccountItem:
      title: Consent Account Item
      required:
        - accountId
        - currency
        - iban
        - accountOwner
      type: object
      properties:
        accountId:
          type: string
          example: 13579
        iban:
          maxLength: 34
          pattern: '[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}'
          type: string
          example: CH9300762011623852957
        currency:
          maxLength: 3
          minLength: 3
          type: string
          example: CHF
        accountOwner:
          maxLength: 70
          type: string
          example: Account Owner XYZ
        designation:
          type: string
          example: Savings ABC
        allowedCurrencies:
          type: array
          items:
            type: string
            example: CHF
    HealthCheckResponse:
      title: Health Check Response
      type: object
      properties:
        requestDateTime:
          title: Request Time
          type: string
          format: date-time
          example: '2018-04-13T11:11:11Z'
        receivedHeaders:
          title: Received Headers
          type: array
          items:
            type: object
            properties:
              headerName:
                type: string
                example: X-Correlation-ID
              headerValue:
                type: string
                description: As received
        receivedPayload:
          title: Received Payload
          type: string
          example: ... as received ...
  responses:
    standard400:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        WWW-Authenticate:
          $ref: '#/components/headers/WWW-Authenticate'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: |
        Bad Request - The format of the request was invalid.

        Examples:
        - InvalidPayload:
        type: /problems/INVALID_PAYLOAD
        title: Payload does not comply with API specification
        detail: Malformed JSON
        instance: path/to/corresponding/resource

        - InvalidParameter:
        type: /problems/INVALID_PAYLOAD
        title: Invalid parameter values have been detected
        detail: Sent data could not processed
        instance: path/to/corresponding/resource

        - MissingId:
        type: /problems/INVALID_PAYLOAD
        title: The payload was not valid
        detail: ID is missing
        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard401:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        WWW-Authenticate:
          $ref: '#/components/headers/WWW-Authenticate'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Unauthorized - The request has not been applied because it provides no
        valid authentication credentials for the target resource.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard403:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        WWW-Authenticate:
          $ref: '#/components/headers/WWW-Authenticate'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Forbidden - A valid OAuth Token was received, but access was denied.
        (Depending on the security requirements, providers can return 404
        instead)


        Examples:

        - InsufficientPrivileges:

        type: /problems/INSUFFICIENT_PRIVILEGES

        title: No privileges for the requested operation

        detail: Insufficient privileges for the requested operation

        instance: path/to/corresponding/resource


        - ExpiredToken:

        type: /problems/EXPIRED_TOKEN

        title: The OAuth Token is expired

        detail: The token is no longer valid

        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard404:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Not Found - Either the endpoint does not exist or a requested resource
        is not yet available (e.g., account statements)


        Examples:

        - InvalidAccounts:

        type: /problems/INSUFFICIENT_PRIVILEGES

        title: Insufficient privileges to access resource

        detail: The provided token does not grant access to the requested
        account

        instance: path/to/corresponding/resource


        - InvalidToken:

        type: /problems/INSUFFICIENT_PRIVILEGES

        title: Insufficient privileges to access resource

        detail: The provided token is not valid

        instance: path/to/corresponding/resource


        - WrongEndpointUrl:

        type: /problems/TECHNICAL_ERROR

        title: URL not found

        detail: The requested endpoint does not exist

        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard405:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Method Not Allowed - The method received in the request-line is known by
        the origin server but not supported by the target resource.


        Examples:

        - NotSupportedOperation:

        type: /problems/WRONG_METHOD

        title: This HTTP operation is not allowed on this endpoint

        detail: Only GET operations are allowed

        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard500:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Internal Server Error - The server encountered an unexpected condition
        that prevented it from fulfilling the request.


        Examples:

        - TechnicalServerError:

        type: /problems/TECHNICAL_ERROR

        title: Technical error on server side

        detail: Processing yielded a technical error

        instance: path/to/corresponding/resource


        - ResourceTooLarge:

        type: /problems/RESOURCE_TOO_LARGE

        title: Generated resource was too large

        detail: The generated resource exceeded the size limit

        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard501:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Not Implemented - The server does not support the functionality required
        to fulfill the request.


        Examples:

        - EndpointNotImplemented:

        type: /problems/NOT_IMPLEMENTED

        title: Target endpoint is not implemented

        detail: This endpoint is not implemented

        instance: path/to/corresponding/resource
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard502:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: |
        Bad Gateway - The upstream gateway or proxy issued an invalid response.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard503:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Service Unavailable - The server is currently unable to handle the
        request due to a temporary overload or scheduled maintenance.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
    standard504:
      headers:
        Content-Language:
          $ref: '#/components/headers/Content-Language'
        X-Correlation-ID:
          $ref: '#/components/headers/X-Correlation-ID'
        X-CorAPI-Source:
          $ref: '#/components/headers/X-CorAPI-Source'
      description: >
        Gateway Timeout - The upstream gateway or proxy did not provide a
        response in time.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CommonErrorResponse'
  parameters:
    cursor_in_query:
      in: query
      name: cursor
      description: >-
        Optional parameter for pagination. Use the ID of the last item from the
        previous response to retrieve the next set of results.
      required: false
      schema:
        type: string
        example: cursorIDxyz
    limit_in_query:
      in: query
      name: limit
      description: >-
        Optional parameter for pagination, specifying the number of items to
        return. The actual maximum limit can be defined by the provider.
      required: false
      schema:
        type: integer
        format: int32
        example: 25
        minimum: 1
        default: 25
    submission_id_in_path:
      name: submissionId
      in: path
      description: ID of payment submission to be retrieved.
      required: true
      schema:
        maxLength: 35
        type: string
        example: submissionId
    target_id_in_header:
      name: X-CorAPI-Target-ID
      in: header
      description: ID that identifies the provider (e.g., a financial institution).
      required: true
      schema:
        type: string
    psu_ip_in_header:
      name: X-PSU-IP-Address
      in: header
      description: >-
        IP address of the user initiating the operation or AUTO for system
        triggered processes
      required: true
      schema:
        type: string
    psu_user_agent_in_header:
      name: X-PSU-User-Agent
      in: header
      description: >-
        User agent of the user initiating the operation or AUTO for system
        triggered processes
      required: true
      schema:
        type: string
    authorization_in_header:
      name: Authorization
      in: header
      description: Bearer followed by a base64 encoded OAuth access token
      required: true
      schema:
        type: string
    correlation_in_header:
      name: X-Correlation-ID
      in: header
      description: >-
        Unique ID (defined by the caller) which will be reflected back in the
        response.
      required: true
      schema:
        type: string
        maxLength: 64
    agent_in_header:
      name: User-Agent
      in: header
      description: Name and version of the of the Client software
      required: true
      schema:
        type: string
    optional_agent_in_header:
      name: User-Agent
      in: header
      description: Name and version of the of the client software
      required: false
      schema:
        type: string
    optional_target_id_in_header:
      name: X-CorAPI-Target-ID
      in: header
      description: ID of the target, e.g., a financial institution.
      required: false
      schema:
        type: string
    optional_correlation_in_header:
      name: X-Correlation-ID
      in: header
      description: >-
        Unique ID (defined by the caller) which will be reflected back in the
        response.
      required: false
      schema:
        type: string
        maxLength: 64
    optional_psu_ip_in_header:
      name: X-PSU-IP-Address
      in: header
      description: IP address of the user initiating the operation
      required: false
      schema:
        type: string
    optional_psu_user_agent_in_header:
      name: X-PSU-User-Agent
      in: header
      description: User of the client software
      required: false
      schema:
        type: string
    optional_psu_accept_lang_in_header:
      in: header
      name: X-PSU-Accept-Lang
      description: Language of client software
      required: false
      schema:
        type: string
  headers:
    Content-Language:
      description: always en
      schema:
        type: string
    WWW-Authenticate:
      description: i.e. "Bearer error='invalid_token'" according to RFC6750 section-3
      schema:
        type: string
    ExpectedDurationInSeconds:
      description: >-
        Indicates by when Retrieve ISO20022 XML status report (PAIN.002) can be
        called to fetch the related PAIN.002.
      schema:
        type: string
    Location:
      description: >-
        Location (URI-reference) of the submitted message. The relative path
        shall be returned as URI-reference.
      schema:
        type: string
        example: /payments/618d4ac6e8a64e3d9f26aa3d8c4f323e
    X-Correlation-ID:
      description: >-
        Client defined ID from request to correlate HTTP requests between a
        client and a server
      schema:
        type: string
        maxLength: 64
        example: f058ebd6-02f7-4d3f-942e-904344e8cde5
    X-CorAPI-Source:
      description: >
        Indicates whether the response was created by the bLink platform or by
        the provider.
      schema:
        type: string
        enum:
          - PLATFORM
          - PROVIDER
    X-Next-Cursor:
      description: >-
        An opaque string value used for pagination. Include this value in the
        cursor parameter of the subsequent request to fetch the next page of
        results. An empty string indicates that there are no more results.
      required: false
      schema:
        type: string
        example: nextCursorIDxyz
