openapi: 3.0.1
info:
  title: NextGenPSD2 XS2A Framework
  version: "1.3.9_VUB-2023-06-14"
  description: |
    # Summary
    The **NextGenPSD2** *Framework Version 1.3.9* offers a modern, open, harmonised and interoperable set of
    Application Programming Interfaces (APIs) as the safest and most efficient way to provide data securely.
    The NextGenPSD2 Framework reduces XS2A complexity and costs, addresses the problem of multiple competing standards 
    in Europe and, aligned with the goals of the Euro Retail Payments Board,
    enables European banking customers to benefit from innovative products and services ('Banking as a Service')
    by granting TPPs safe and secure (authenticated and authorised) access to their bank accounts and financial data.

    The possible Approaches are:
      * OAuth SCA Approach

      Not every message defined in this API definition is necessary for all approaches. 
      Furthermore this API definition does not differ between methods which are mandatory, conditional, or optional.
      Therefore for a particular implementation of a Berlin Group PSD2 compliant API it is only necessary to support 
      a certain subset of the methods defined in this API definition.

      **Please have a look at the implementation guidelines if you are not sure 
      which message has to be used for the approach you are going to use.**
    
    ## Some General Remarks Related to this version of the OpenAPI Specification:
    * **This API definition is based on the Implementation Guidelines of the Berlin Group PSD2 API.** 
      It is not a replacement in any sense.
      The main specification is (at the moment) always the Implementation Guidelines of the Berlin Group PSD2 API.
    * **This API definition contains the REST-API for requests from the PISP to the ASPSP.**
    * **This API definition contains the messages for all different approaches defined in the Implementation Guidelines.**
    * According to the OpenAPI-Specification [https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md]
      
        "If in is "header" and the name field is "Accept", "Content-Type" or "Authorization", the parameter definition SHALL be ignored."
      
      The element "Accept" will not be defined in this file at any place.
      
      The elements "Content-Type" and "Authorization" are implicitly defined by the OpenApi tags "content" and "security".
      
    * There are several predefined types which might occur in payment initiation messages, 
      but are not used in the standard JSON messages in the Implementation Guidelines.
      Therefore they are not used in the corresponding messages in this file either.
      We added them for the convenience of the user.
      If there is a payment product, which needs these fields, one can easily use the predefined types.
      But the ASPSP need not to accept them in general.
      
    * **We omit the definition of all standard HTTP header elements (mandatory/optional/conditional) 
      except they are mentioned in the Implementation Guidelines.**
      Therefore the implementer might add these in his own realisation of a PSD2 compliant API in addition to the elements defined in this file.
       
    ## General Remarks on Data Types

    The Berlin Group definition of UTF-8 strings in context of the PSD2 API has to support at least the following characters

    a b c d e f g h i j k l m n o p q r s t u v w x y z
    
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    
    0 1 2 3 4 5 6 7 8 9
    
    / - ? : ( ) . , ' +
    
    Space


  license:
    name: Creative Commons Attribution 4.0 International Public License
    url: https://creativecommons.org/licenses/by/4.0/
  #termsOfService: URL for Terms of Service of the API
  contact:
    name: The Berlin Group - A European Standards Initiative
    url: https://www.berlin-group.org/
    email: info@berlin-group.org

externalDocs:
  description: |
    Full Documentation of NextGenPSD2 Access to Account Interoperability Framework
    (General Introduction Paper, Operational Rules, Implementation Guidelines)
  url: https://www.berlin-group.org/nextgenpsd2-downloads

servers:
  - url: https://api.vub.sk
    description: PSD2 server
  - url: https://api.vub.sk
    description: Optional PSD2 test server, use APIs with HTTP request header "X-PSD2Sandbox" = "yes"

paths:

  #####################################################
  # Payment Information Service
  #####################################################

  /v1/{payment-service}/{payment-product}:
  
    post:
      summary: Payment initiation request 
      description: | 
        This method is used to initiate a payment at the ASPSP.
      
        ## Variants of payment initiation requests
        
        This method to initiate a payment initiation at the ASPSP can be sent with either a JSON body or an pain.001 body depending on the payment product in the path.
        
        There are the following **payment products**:
        
          - Payment products with payment information in *JSON* format:
            - ***sepa-credit-transfers***
            - ***instant-sepa-credit-transfers***
            - ***target-2-payments***
            - ***cross-border-credit-transfers***
          - Payment products with payment information in *pain.001* XML format:
            - ***pain.001-sepa-credit-transfers***
            - ***pain.001-instant-sepa-credit-transfers***
            - ***pain.001-target-2-payments***
            - ***pain.001-cross-border-credit-transfers***
        
        Furthermore the request body depends on the **payment-service**:
          * ***payments***: A single payment initiation request.
          
          * ***periodic-payments***: 
            Create a standing order initiation resource for recurrent i.e. periodic payments addressable under {paymentId} 
             with all data relevant for the corresponding payment product and the execution of the standing order contained in a JSON body. 
        
        This is the first step in the API to initiate the related recurring/periodic payment.
          
      operationId: initiatePayment
      tags:
        - Payment Initiation Service (PIS)
      
      security:
      ##################################################### 
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation, 
      # it is recommended to adjust the security schemes according to 
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/paymentService"
        - $ref: "#/components/parameters/paymentProduct"
      #query # NO QUERY PARAMETER
      #header
        - $ref: "#/components/parameters/Authorization"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/PSU-ID"
        - $ref: "#/components/parameters/PSU-ID-Type"
        - $ref: "#/components/parameters/PSU-Corporate-ID"
        - $ref: "#/components/parameters/PSU-Corporate-ID-Type"
        - $ref: "#/components/parameters/consentId_HEADER_optional"
        - $ref: "#/components/parameters/PSU-IP-Address_mandatory"
        - $ref: "#/components/parameters/TPP-Redirect-URI"
        - $ref: "#/components/parameters/TPP-Nok-Redirect-URI"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
        
      requestBody:
        $ref: "#/components/requestBodies/paymentInitiation"
      
      responses:
        '201':
          $ref: "#/components/responses/CREATED_201_PaymentInitiation"
        
        '400': 
          $ref: "#/components/responses/BAD_REQUEST_400_PIS"
        '401': 
          $ref: "#/components/responses/UNAUTHORIZED_401_PIS"
        '403': 
          $ref: "#/components/responses/FORBIDDEN_403_PIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_PIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_PIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_PIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_PIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_PIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_PIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_PIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_PIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_PIS"

  /v1/{payment-service}/{payment-product}/{paymentId}:

    get:
      summary: Get payment information
      description: Returns the content of a payment object
      operationId: getPaymentInformation
      tags:
        - Payment Initiation Service (PIS)
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      parameters:
      #path
        - $ref: "#/components/parameters/paymentService"
        - $ref: "#/components/parameters/paymentProduct"
        - $ref: "#/components/parameters/paymentId"
      #query # NO QUERY PARAMETER
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY 
      
      responses: 
        '200':
          $ref: "#/components/responses/OK_200_PaymentInitiationInformation"
        '202':
          $ref: "#/components/responses/OK_200_PaymentInitiationInformation"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_PIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_PIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_PIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_PIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_PIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_PIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_PIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_PIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_PIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_PIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_PIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_PIS"

    delete:
      summary: Payment cancellation request
      description: | 
        This method initiates the cancellation of a payment. 
        Depending on the payment-service, the payment-product and the ASPSP's implementation, 
        this TPP call might be sufficient to cancel a payment. 
        If an authorisation of the payment cancellation is mandated by the ASPSP, 
        a corresponding hyperlink will be contained in the response message.
        
        Cancels the addressed payment with resource identification paymentId if applicable to the payment-service, payment-product and received in product related timelines (e.g. before end of business day for scheduled payments of the last business day before the scheduled execution day). 
        
        The response to this DELETE command will tell the TPP whether the
          * access method was rejected,
          * access method was successful, or
          * access method is generally applicable, but further authorisation processes are needed.
      operationId: cancelPayment
      tags:
        - Payment Initiation Service (PIS)
      
      security:
      ##################################################### 
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation, 
      # it is recommended to adjust the security schemes according to 
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/paymentService"
        - $ref: "#/components/parameters/paymentProduct"
        - $ref: "#/components/parameters/paymentId"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
        - $ref: "#/components/parameters/TPP-Nok-Redirect-URI"
        - $ref: "#/components/parameters/TPP-Redirect-URI"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY 
      
      responses:
        '204':
          $ref: "#/components/responses/NO_CONTENT_204_PaymentInitiationCancel" 
          #If the DELETE is sufficient for cancelling the payment
        '202':
          $ref: "#/components/responses/RECEIVED_202_PaymentInitiationCancel" 
          #If the DELETE is not sufficient for cancelling the payment since an authorisation of the cancellation by the PSU is needed.
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_PIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_PIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_PIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_PIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_PIS_CANC"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_PIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_PIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_PIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_PIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_PIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_PIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_PIS"


  /v1/{payment-service}/{payment-product}/{paymentId}/status:
  
    get:
      summary: Payment initiation status request
      description: Check the transaction status of a payment initiation.
      operationId: getPaymentInitiationStatus
      tags:
        - Payment Initiation Service (PIS)
      
      security:
      ##################################################### 
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      #In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/paymentService"
        - $ref: "#/components/parameters/paymentProduct"
        - $ref: "#/components/parameters/paymentId"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_PaymentInitiationStatus"
          
        '202':
          $ref: "#/components/responses/OK_202_PaymentInitiationStatus"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_PIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_PIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_PIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_PIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_PIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_PIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_PIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_PIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_PIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_PIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_PIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_PIS"



  #####################################################
  # Account Information Service
  #####################################################

      #####################################################
      # Accounts
      #####################################################


  /v1/accounts:
    get:
      summary: Read account list
      description: | 
        Read the identifiers of the available payment account together with 
        booking balance information, depending on the consent granted.
        
        It is assumed that a consent of the PSU to this access is already given and stored on the ASPSP system. 
        The addressed list of accounts depends then on the PSU ID and the stored consent addressed by consentId, 
        respectively the OAuth2 access token. 
        
        Returns all identifiers of the accounts, to which an account access has been granted to through 
        the /consents endpoint by the PSU. 
        In addition, relevant information about the accounts and hyperlinks to corresponding account 
        information resources are provided if a related consent has been already granted.
        
        Remark: Note that the /consents endpoint optionally offers to grant an access on all available 
        payment accounts of a PSU. 
        In this case, this endpoint will deliver the information about all available payment accounts 
        of the PSU at this ASPSP.
      operationId: getAccountList
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path # NO PATH PARAMETER
      #query
        - $ref: "#/components/parameters/withBalanceQuery"
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/consentId_HEADER_mandatory"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_AccountList"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"

  /v1/accounts/{account-id}:
    get:
      summary: Read account details
      description: | 
        Reads details about an account, with balances where required. 
        It is assumed that a consent of the PSU to 
        this access is already given and stored on the ASPSP system. 
        The addressed details of this account depends then on the stored consent addressed by consentId, 
        respectively the OAuth2 access token.
        
        **NOTE:** The account-id can represent a multicurrency account. 
        In this case the currency code is set to "XXX".
        
        Give detailed information about the addressed account.
        
        Give detailed information about the addressed account together with balance information
      operationId: readAccountDetails
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/accountId"
      #query
        - $ref: "#/components/parameters/withBalanceQuery"
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/consentId_HEADER_mandatory"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_AccountDetails"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"

  /v1/accounts/{account-id}/balances:
    get:
      summary: Read balance
      description: |
        Reads account data from a given account addressed by "account-id". 
        
        **Remark:** This account-id can be a tokenised identification due to data protection reason since the path 
        information might be logged on intermediary servers within the ASPSP sphere. 
        This account-id then can be retrieved by the "Get account list" call.
        
        The account-id is constant at least throughout the lifecycle of a given consent.
      operationId: getBalances
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/accountId"
      #query # NO QUERY PARAMETER
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/consentId_HEADER_mandatory"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_Balances"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"

  /v1/accounts/{account-id}/transactions:
    get:
      summary: Read transaction list of an account
      description: |
        Read transaction reports or transaction lists of a given account ddressed by "account-id", depending on the steering parameter 
        "bookingStatus" together with balances.
        
        For a given account, additional parameters are e.g. the attributes "dateFrom" and "dateTo". 
        The ASPSP might add balance information, if transaction lists without balances are not supported.
      operationId: getTransactionList
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/accountId"
      #query
        - $ref: "#/components/parameters/dateFrom"
        - $ref: "#/components/parameters/dateTo"
        - $ref: "#/components/parameters/entryReferenceFrom"
        - $ref: "#/components/parameters/bookingStatusGeneric"
        - $ref: "#/components/parameters/deltaList"
        - $ref: "#/components/parameters/withBalanceQuery"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/pageSize"
        
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/consentId_HEADER_mandatory"
        #- $ref: "#/components/parameters/Accept" #Can not defined in Open API. See general comments in the description attached to the top level of the file.
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_AccountsTransactions"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"


  /v1/accounts/{account-id}/transactions/{transactionId}: 
    get:
      summary: Read transaction details
      description: |
        Reads transaction details from a given transaction addressed by "transactionId" on a given account addressed by "account-id". 
        This call is only available on transactions as reported in a JSON format.
        
        **Remark:** Please note that the PATH might be already given in detail by the corresponding entry of the response of the 
        "Read Transaction List" call within the _links subfield.
      operationId: getTransactionDetails
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/accountId"
        - $ref: "#/components/parameters/transactionId"
      #query # NO QUERY PARAMETER
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/consentId_HEADER_mandatory"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_TransactionDetails"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"


      #####################################################
      # Card Accounts
      #####################################################

  /v1/consents:
    post:
      summary: Create consent
      description: | 
        This method create a consent resource, defining access rights to dedicated accounts of 
        a given PSU-ID. These accounts are addressed explicitly in the method as 
        parameters as a core function.
        
        VUB accept a specific access right on the access on all PSD2 related services for all available accounts.
        
        As another option VUB also accept a command, where only access rights are inserted without mentioning the addressed account. 
        The relation to accounts is then handled afterwards between PSU and ASPSP. 
        VUB accepts a command with access rights
          * to see the list of available payment accounts or
          * to see the list of available payment accounts with balances.
      operationId: createConsent
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
        #path # NO PATH PARAMETER
        #query # NO QUERY PARAMETER
        #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/PSU-ID"
        - $ref: "#/components/parameters/PSU-ID-Type"
        - $ref: "#/components/parameters/PSU-Corporate-ID"
        - $ref: "#/components/parameters/PSU-Corporate-ID-Type"
        - $ref: "#/components/parameters/TPP-Redirect-URI"
        - $ref: "#/components/parameters/TPP-Nok-Redirect-URI"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-IP-Address_mandatory"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      
      requestBody:
        $ref: "#/components/requestBodies/consents"
      
      responses:
        '201':
          $ref: "#/components/responses/CREATED_201_Consents"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"


  /v1/consents/{consentId}:

    get:
      summary: Get consent request
      description: |
        Returns the content of an account information consent object. 
        This is returning the data for the TPP especially in cases, 
        where the consent was directly managed between ASPSP and PSU e.g. in a redirect SCA Approach.
      operationId: getConsentInformation
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/consentId_PATH"
      #query # NO QUERY PARAMETER
      #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_ConsentInformation"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"


    delete:
      summary: Delete consent
      description: The TPP can delete an account information consent object if needed.
      operationId: deleteConsent
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/consentId_PATH"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '204':
          $ref: "#/components/responses/NO_CONTENT_204_Consents"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"


  /v1/consents/{consentId}/status:
    get:
      summary: Consent status request
      description: Read the status of an account information consent resource.
      operationId: getConsentStatus
      tags:
        - Account Information Service (AIS)
      
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
      #path
        - $ref: "#/components/parameters/consentId_PATH"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #conditional elemention for AIS
        - $ref: "#/components/parameters/PSU-IP-Address_conditionalForAis"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_ConsentStatus"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_AIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_AIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_AIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_AIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_AIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_AIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_AIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_AIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_AIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_AIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_AIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"



  #####################################################
  # Funds Confirmation Service
  #####################################################

  /v1/funds-confirmations: 
    post:
      summary: Confirmation of funds request
      description: 
        Creates a confirmation of funds request at the ASPSP.
        Checks whether a specific amount is available at point of time 
        of the request on an account linked to a given tuple card issuer(TPP)/card number, 
        or addressed by IBAN and TPP respectively.
        
        If the related extended services are used a conditional Consent-ID is contained in the header. 
        This field is contained but commented out in this specification.
      operationId: checkAvailabilityOfFunds
      tags:
        - Confirmation of Funds Service (PIIS)

      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      

      parameters:
      #path # NO PATH PARAMETER
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
        - $ref: "#/components/parameters/Authorization"
          #method specific header elements
        #- $ref: "#/components/parameters/consentId_HEADER_optional" # Consent-Id for usage of extended services
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
      
      requestBody:
        $ref: "#/components/requestBodies/confirmationOfFunds"
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_ConfirmationOfFunds"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_PIIS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_PIIS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_PIIS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_PIIS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_PIIS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_PIIS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_PIIS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_PIIS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_PIIS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_PIIS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_PIIS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_PIIS"


  #####################################################
  # Signing Basket
  #####################################################

  /v1/signing-baskets:

    post:
      summary: Create a signing basket resource
      description: |
        Create a signing basket resource for authorising several transactions with one SCA method. 
        The resource identifications of these transactions are contained in the payload of this access method
      operationId: createSigningBasket
      tags:
        - Signing Baskets (SBS)
        
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      
      parameters:
        #path # NO PATH PARAMETER
        #query # NO QUERY PARAMETER
        #header
        - $ref: "#/components/parameters/Authorization"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/PSU-ID"
        - $ref: "#/components/parameters/PSU-ID-Type"
        - $ref: "#/components/parameters/PSU-Corporate-ID"
        - $ref: "#/components/parameters/PSU-Corporate-ID-Type"
        - $ref: "#/components/parameters/consentId_HEADER_optional"
        - $ref: "#/components/parameters/PSU-IP-Address_mandatory"
        - $ref: "#/components/parameters/TPP-Redirect-URI"
        - $ref: "#/components/parameters/TPP-Nok-Redirect-URI"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      
      requestBody:
        $ref: "#/components/requestBodies/signingBasket"
      
      responses:
        '201':
          $ref: "#/components/responses/CREATED_201_SigningBasket"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_SBS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_SBS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_SBS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_SBS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_SBS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_SBS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_SBS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_SBS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_SBS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_SBS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_SBS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_SBS"


  /v1/signing-baskets/{basketId}:

    get:
      summary: Returns the content of an signing basket object
      description: 
        Returns the content of a signing basket object. 
      operationId: getSigningBasket
      tags:
        - Signing Baskets (SBS)
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      parameters:
        #path # NO PATH PARAMETER
        - $ref: "#/components/parameters/basketId_PATH"
        #query # NO QUERY PARAMETER
        #header
        - $ref: "#/components/parameters/Authorization_Required"
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
        #NO REQUEST BODY 
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_GetSigningBasket"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_SBS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_SBS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_SBS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_SBS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_SBS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_SBS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_SBS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_SBS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_SBS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_SBS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_SBS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_SBS"

    delete:
      summary: Delete the signing basket
      description: |
        Delete the signing basket structure as long as no (partial) authorisation has yet been applied. 
        The undlerying transactions are not affected by this deletion.
        
        Remark: The signing basket as such is not deletable after a first (partial) authorisation has been applied. 
        Nevertheless, single transactions might be cancelled on an individual basis on the XS2A interface.
      operationId: deleteSigningBasket
      tags:
        - Signing Baskets (SBS)
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      parameters:
      #path
        - $ref: "#/components/parameters/basketId_PATH"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '204':
          $ref: "#/components/responses/NO_CONTENT_204_SigningBasket"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_SBS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_SBS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_SBS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_SBS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_SBS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_SBS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_SBS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_SBS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_SBS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_SBS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_SBS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_SBS"


  /v1/signing-baskets/{basketId}/status:
  
    get:
      summary: Read the status of the signing basket
      description: |
        Returns the status of a signing basket object. 
      operationId: getSigningBasketStatus
      tags:
        - Signing Baskets (SBS)
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
        - BearerAuthOAuth: []
      parameters:
      #path
        - $ref: "#/components/parameters/basketId_PATH"
      #query # NO QUERY PARAMETER
      #header
          #common header parameter
        - $ref: "#/components/parameters/X-Request-ID"
          #header to support the signature function
        - $ref: "#/components/parameters/Digest"
        - $ref: "#/components/parameters/Signature"
        - $ref: "#/components/parameters/TPP-Signature-Certificate"
          #method specific header elements
        - $ref: "#/components/parameters/PSU-ID"
        - $ref: "#/components/parameters/PSU-ID-Type"
        - $ref: "#/components/parameters/PSU-Corporate-ID"
        - $ref: "#/components/parameters/PSU-Corporate-ID-Type"
          #optional additional PSU Information in header
        - $ref: "#/components/parameters/PSU-IP-Address_optional"
        - $ref: "#/components/parameters/PSU-IP-Port"
        - $ref: "#/components/parameters/PSU-Accept"
        - $ref: "#/components/parameters/PSU-Accept-Charset"
        - $ref: "#/components/parameters/PSU-Accept-Encoding"
        - $ref: "#/components/parameters/PSU-Accept-Language"
        - $ref: "#/components/parameters/PSU-User-Agent"
        - $ref: "#/components/parameters/PSU-Http-Method"
        - $ref: "#/components/parameters/PSU-Device-ID"
        - $ref: "#/components/parameters/PSU-Geo-Location"
      #NO REQUEST BODY
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_SigningBasketStatus"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_SBS"
        '401':
          $ref: "#/components/responses/UNAUTHORIZED_401_SBS"
        '403':
          $ref: "#/components/responses/FORBIDDEN_403_SBS"
        '404':
          $ref: "#/components/responses/NOT_FOUND_404_SBS"
        '405':
          $ref: "#/components/responses/METHOD_NOT_ALLOWED_405_SBS"
        '406':
          $ref: "#/components/responses/NOT_ACCEPTABLE_406_SBS"
        '408':
          $ref: "#/components/responses/REQUEST_TIMEOUT_408_SBS"
        '409':
          $ref: "#/components/responses/CONFLICT_409_SBS"
        '415':
          $ref: "#/components/responses/UNSUPPORTED_MEDIA_TYPE_415_SBS"
        '429':
          $ref: "#/components/responses/TOO_MANY_REQUESTS_429_SBS"
        '500':
          $ref: "#/components/responses/INTERNAL_SERVER_ERROR_500_SBS"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_SBS"
          
  #####################################################
  # OAuth
  #####################################################
  
  /oauth2/authorize:
    get:
      summary: Authorisation Request
      description: |
       Authorisation request of the TPP to the authorisation endpoint
      
      operationId: authorisationRequest
      tags: 
        - OAuth 2.0
      
      parameters:
      #query mandatory
        - $ref: "#/components/parameters/response_type"
        - $ref: "#/components/parameters/client_id"
        - $ref: "#/components/parameters/scope"
        - $ref: "#/components/parameters/state"
        - $ref: "#/components/parameters/redirect_uri"
        - $ref: "#/components/parameters/code_challenge"
        
      #query optional
        - $ref: "#/components/parameters/code_challenge_method"
        
      
      responses:
        '302':
          $ref: "#/components/responses/OK_302_Authorisation_Found"
        
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_Authorisation_Request"
          
       
      
  /oauth2/token:
    post:
      summary: Token Request
      description: |
        The TPP sends a POST request to the token endpoint in order to exchange the authorisation code provided in the authorisation response for an access token and, optionally, a refresh token.
      
      operationId: tokenRequest
      tags: 
        - OAuth 2.0
     
      requestBody:
        $ref: "#/components/requestBodies/oauthToken"
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_Token_Required"
          
        '400':
          $ref: "#/components/responses/BAD_REQUEST_400_Token_Request"
  
  /psd2/hcheck:
    get:
      summary: Health Check
      description: |
        Return status availability of PSD2. Client certificate and registration is needed to perform this request.  
      operationId: healthCheck
      tags: 
        - Health Check
      security:
      #####################################################
      # REMARKS ON SECURITY IN THIS OPENAPI FILE
      # In this file only the basic security element to transport
      # the bearer token of an OAuth2 process, which has to 
      # be included in the HTTP header is described.
      #
      # WARNING:
      # If you want to use this file for a productive implementation,
      # it is recommended to adjust the security schemes according to
      # your system environments and security policies.
      #####################################################
        - {}
      
      responses:
        '200':
          $ref: "#/components/responses/OK_200_Health_Check"
        '401':
          $ref: "#/components/responses/BAD_REQUEST_401_Unauthorized"
        '500':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_500_HC"
        '503':
          $ref: "#/components/responses/SERVICE_UNAVAILABLE_503_AIS"
         
      

components:
#####################################################
# Predefined Components
#####################################################

  securitySchemes:
  #####################################################
  # Predefined Security Schemes:
  #
  # In this file only the basic security element to transport
  # the bearer token of an OAuth2 process, which has to 
  # be included in the HTTP header is described.
  #
  # WARNING:
  # If you want to use this file for a productive implementation, 
  # it is recommended to adjust the security schemes according to 
  # your system environments and security policies.
  #####################################################
    BearerAuthOAuth:
      description: |
        Bearer Token. 
        
        Is contained only, if an OAuth2 based authentication was performed in a pre-step or 
        an OAuth2 based SCA was performed in a preceding AIS service in the same session.
      type: http
      scheme: bearer


  schemas:
  #####################################################
  # Predefined Schemas
  #####################################################
        
    grant_type:
      description: |
        "authorization_code" is recommended as response type.
      example: "authorization_code"
      type: string
        
    code:
      description: Authorisation code from the authorisation response
      example: "bee32210-5877-487a-919f-15a74e413c9k"
      type: string
        
    code_verifier:
      description: PKCE verifier according to cryptographic RFC 7636 used to prevent code injection attacks.
      example: "7814hj4hjai87qqhjz9hahdeu9qu771367647864676787878"
      type: string
      
    client_id:
      description: |
        organizationIdentifier as provided in the eIDAS certificate. The organizationIdentifier attribute shall contain information using the following structure in the presented order:
        - "PSD" as 3 character legal person identity type reference;
        - 2 character ISO 3166 country code representing the NCA country;
        - hyphen-minus "-" and
        - 2-8 character NCA identifier (A-Z uppercase only, no separator)
        - hyphen-minus "-" and
        - PSP identifier (authorization number as specified by NCA).
      example: "PSDSK-NBS-12345678"
      type: string

    redirect_uri:
      description: The URI of the TPP where the OAuth2 server is redirecting the PSU's user agent after the authorization.
      example: "https://client.example.com/callback"
      type: string  

    paymentId:
      description: 
        Resource identification of the generated payment initiation resource.
      type: string
      example: "1234-wertiq-983"


    paymentIdList:
      description: A list of paymentIds.
      type: array
      minItems: 1
      items:
        $ref: "#/components/schemas/paymentId"


    basketId:
      description: 
        Resource identification of the generated signing basket resource.
      type: string
      example: "1234-basket-567"


    authorisationId:
      description: Resource identification of the related SCA.
      type: string
      example: "123auth456"


    authenticationMethodId:
      description: |
            An identification provided by the ASPSP for the later identification of the authentication method selection.
      type: string
      maxLength: 35
      example: "myAuthenticationID"


    accountId:
      description: This identification is denoting the addressed account, where the transaction has been performed. 
      type: string
      example: "qwer3456tzui7890"


    consentId:
      description: |
        ID of the corresponding consent object as returned by an account information consent request.
      type: string

    authorization:
      description: |
        Authorization by OAuth2 based Protocol.
      type: string

    consentIdList:
      description: A list of consentIds.
      type: array
      minItems: 1
      items:
        $ref: "#/components/schemas/consentId"


    transactionId:
      description: |
        This identification is given by the attribute transactionId of the corresponding entry of a transaction list.
      type: string
      example: "3dc3d5b3-7023-4848-9853-f5400a64e80f"



    entryReference:
      description: |
        Is the identification of the transaction as used e.g. for reference for deltafunction on application level.
        The same identification as for example used within camt.05x messages.
      type: string
      maxLength: 35


    transactionStatus:
      description: | 
        The transaction status is filled with codes of the ISO 20022 data table:
        - 'ACCC': 'AcceptedSettlementCompleted' -
          Settlement on the creditor's account has been completed.
        - 'ACCP': 'AcceptedCustomerProfile' - 
          Preceding check of technical validation was successful. 
          Customer profile check was also successful.
        - 'ACSC': 'AcceptedSettlementCompleted' - 
          Settlement on the debtor�s account has been completed.
          
          **Usage:** this can be used by the first agent to report to the debtor that the transaction has been completed. 
          
          **Warning:** this status is provided for transaction status reasons, not for financial information. 
          It can only be used after bilateral agreement.
        - 'ACSP': 'AcceptedSettlementInProcess' - 
          All preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution.
        - 'ACTC': 'AcceptedTechnicalValidation' - 
          Authentication and syntactical and semantical validation are successful.
        - 'ACWC': 'AcceptedWithChange' - 
          Instruction is accepted but a change will be made, such as date or remittance not sent.
        - 'ACWP': 'AcceptedWithoutPosting' - 
          Payment instruction included in the credit transfer is accepted without being posted to the creditor customer�s account.
        - 'RCVD': 'Received' - 
          Payment initiation has been received by the receiving agent.
        - 'PDNG': 'Pending' - 
          Payment initiation or individual transaction included in the payment initiation is pending. 
          Further checks and status update will be performed.
        - 'RJCT': 'Rejected' - 
          Payment initiation or individual transaction included in the payment initiation has been rejected.
        - 'CANC': 'Cancelled'
          Payment initiation has been cancelled before execution
          Remark: This codeis accepted as new code by ISO20022.
        - 'ACFC': 'AcceptedFundsChecked' -
          Preceding check of technical validation and customer profile was successful and an automatic funds check was positive .
          Remark: This code is accepted as new code by ISO20022.
        - 'PATC': 'PartiallyAcceptedTechnical'
          Correct The payment initiation needs multiple authentications, where some but not yet all have been performed. Syntactical and semantical validations are successful.
          Remark: This code is accepted as new code by ISO20022.
        - 'PART': 'PartiallyAccepted' -
          A number of transactions have been accepted, whereas another number of transactions have not yet achieved 'accepted' status.
          Remark: This code may be used only in case of bulk payments. It is only used in a situation where all mandated authorisations have been applied, but some payments have been rejected.
          
      type: string
      enum:
        - "ACCC"
        - "ACCP"
        - "ACSC"
        - "ACSP"
        - "ACTC"
        - "ACWC"
        - "ACWP"
        - "RCVD"
        - "PDNG"
        - "RJCT"
        - "CANC"
        - "ACFC"
        - "PATC"
        - "PART"
      example: "ACCP"


    transactionStatus_SBS:
      description: | 
        The transaction status is filled with codes of the ISO 20022 data table.
        Only the codes RCVD, PATC, ACTC, ACWC and RJCT are used:
        - 'ACSP': 'AcceptedSettlementInProcess' - 
          All preceding checks such as technical validation and customer profile were successful and therefore the payment initiation has been accepted for execution.
        - 'ACTC': 'AcceptedTechnicalValidation' - 
          Authentication and syntactical and semantical validation are successful.
        - 'ACWC': 'AcceptedWithChange' - 
          Instruction is accepted but a change will be made, such as date or remittance not sent.
        - 'RCVD': 'Received' - 
          Payment initiation has been received by the receiving agent.
        - 'RJCT': 'Rejected' - 
          Payment initiation or individual transaction included in the payment initiation has been rejected.
      type: string
      enum:
        - "ACSC"
        - "ACTC"
        - "PATC"
        - "RCVD"
        - "RJCT"
        - "CANC"
      example: "RCVD"

    consentStatus:
      description: |
        This is the overall lifecycle status of the consent.
        
        Valid values are:
          - 'received': The consent data have been received and are technically correct. 
            The data is not authorised yet.
          - 'rejected': The consent data have been rejected e.g. since no successful authorisation has taken place.
          - 'valid': The consent is accepted and valid for GET account data calls and others as specified in the consent object.
          - 'revokedByPsu': The consent has been revoked by the PSU towards the ASPSP.
          - 'expired': The consent expired.
          - 'terminatedByTpp': The corresponding TPP has terminated the consent by applying the DELETE method to the consent resource.
          - 'partiallyAuthorised': The consent is due to a multi-level authorisation, some but not all mandated authorisations have been performed yet.
        
        The ASPSP might add further codes. These codes then shall be contained in the ASPSP's documentation of the XS2A interface 
        and has to be added to this API definition as well.
      type: string
      enum:
        - "received"
        - "rejected"
        - "valid"
        - "revokedByPsu"
        - "expired"
        - "terminatedByTpp"
        - "partiallyAuthorised"

    transactionFeeIndicator:
      description: |
        If equals 'true', the transaction will involve specific transaction cost as shown by the ASPSP in
        their public price list or as agreed between ASPSP and PSU.
        If equals 'false', the transaction will not involve additional specific transaction costs to the PSU unless the fee amount is given specifically in the data elements transactionFees and/or currencyConversionFees.
        If this data element is not used, there is no information about transaction fees unless the fee amount is given explicitly in the data element transactionFees and/or currencyConversionFees.
      type: boolean

    recurringIndicator:
      description: |
        "true", if the consent is for recurring access to the account data.
        
        "false", if the consent is for one access to the account data.
      type: boolean
      example: false

    batchBookingPreferred:
      description: |
        If this element equals 'true', the PSU prefers only one booking entry. 
        If this element equals 'false', the PSU prefers individual booking of all contained individual transactions. 
        
        The ASPSP will follow this preference according to contracts agreed on with the PSU.
      type: boolean
      example: false


    scaMethods:
      description: |
        This data element might be contained, if SCA is required and if the PSU has a choice between different
        authentication methods.
        
        Depending on the risk management of the ASPSP this choice might be offered before or after the PSU
        has been identified with the first relevant factor, or if an access token is transported.
        
        If this data element is contained, then there is also a hyperlink of type 'startAuthorisationWithAuthenticationMethodSelection'
        contained in the response body.
        
        These methods shall be presented towards the PSU for selection by the TPP.

      type: array
      items:
        $ref: "#/components/schemas/authenticationObject"

    chosenScaMethod:
      # description: |
      #  This data element is only contained in the response if the ASPSP has chosen the Embedded SCA Approach,
      #  if the PSU is already identified e.g. with the first relevant factor or alternatively an access token,
      #  if SCA is required and if the authentication method is implicitly selected.
      $ref: "#/components/schemas/authenticationObject"

    authenticationType:
      description: |
        Type of the authentication method.
        
        More authentication types might be added during implementation projects and documented in the ASPSP documentation.
        
          - 'SMS_OTP': An SCA method, where an OTP linked to the transaction to be authorised is sent to the PSU through a SMS channel.
          - 'CHIP_OTP': An SCA method, where an OTP is generated by a chip card, e.g. a TOP derived from an EMV cryptogram. 
            To contact the card, the PSU normally needs a (handheld) device. 
            With this device, the PSU either reads the challenging data through a visual interface like flickering or 
            the PSU types in the challenge through the device key pad. 
            The device then derives an OTP from the challenge data and displays the OTP to the PSU.
          - 'PHOTO_OTP': An SCA method, where the challenge is a QR code or similar encoded visual data 
            which can be read in by a consumer device or specific mobile app. 
            The device resp. the specific app than derives an OTP from the visual challenge data and displays 
            the OTP to the PSU.
          - 'PUSH_OTP': An OTP is pushed to a dedicated authentication APP and displayed to the PSU.
          - 'SMTP_OTP': An OTP is sent via email to the PSU.
        
      type: string
      enum:
        - "SMS_OTP"
        - "CHIP_OTP"
        - "PHOTO_OTP"
        - "PUSH_OTP"
        - "SMTP_OTP"

    authenticationObject:
      description: |
        Authentication object.
      type: object
      required:
        - authenticationType
        - authenticationMethodId
      properties:
        authenticationType:
          $ref: "#/components/schemas/authenticationType"

        authenticationVersion:
          description: |
            Depending on the "authenticationType".
            This version can be used by differentiating authentication tools used within performing OTP generation in the same authentication type.
            This version can be referred to in the ASPSP?s documentation.
          type: string

        authenticationMethodId:
          $ref: "#/components/schemas/authenticationMethodId"

        name:
          description: |
            This is the name of the authentication method defined by the PSU in the Online Banking frontend of the ASPSP.
            Alternatively this could be a description provided by the ASPSP like "SMS OTP on phone +49160 xxxxx 28".
            This name shall be used by the TPP when presenting a list of authentication methods to the PSU, if available.
          type: string
          example: "SMS OTP on phone +49160 xxxxx 28"

        explanation:
          description: |
            Detailed information about the SCA method for the PSU.
          type: string
          example: Detailed information about the SCA method for the PSU.

    oauthToken:
      description: |
        x-www-form-urlencoded body of token request.
      type: object
      required:
        - grant_type
        - client_id
        - code
        - redirect_uri
        - code_verifier
      properties:
        grant_type:
          $ref: "#/components/schemas/grant_type"
        client_id:
          $ref: "#/components/schemas/client_id"
        code:
          $ref: "#/components/schemas/code"
        redirect_uri:
          $ref: "#/components/schemas/redirect_uri"
        code_verifier:
          $ref: "#/components/schemas/code_verifier"

    signingBasket:
      description: |
        JSON Body of a establish signing basket request.
        The body shall contain at least one entry.
      type: object
      properties:
        paymentIds:
          $ref: "#/components/schemas/paymentIdList"
        consentIds:
          $ref: "#/components/schemas/consentIdList"

    challengeData:
      description: |
        It is contained in addition to the data element 'chosenScaMethod' if challenge data is needed for SCA.
        In rare cases this attribute is also used in the context of the 'startAuthorisationWithPsuAuthentication' link.
      type: object
      properties:
        image:
          type: string
          format: byte
          description: |
            PNG data (max. 512 kilobyte) to be displayed to the PSU,
            Base64 encoding, cp. [RFC4648].
            This attribute is used only, when PHOTO_OTP or CHIP_OTP
            is the selected SCA method.
        data:
          type: array
          items:
            type: string
          description: A collection of strings as challenge data.
        imageLink:
          type: string
          format: url
          description: A link where the ASPSP will provides the challenge image for the TPP.
        otpMaxLength:
          type: integer
          description: The maximal length for the OTP to be typed in by the PSU.
        otpFormat:
          type: string
          description: The format type of the OTP to be typed in. The admitted values are "characters" or "integer".
          enum:
            - "characters"
            - "integer"
        additionalInformation:
          type: string
          description: |
            Additional explanation for the PSU to explain
            e.g. fallback mechanism for the chosen SCA method.
            The TPP is obliged to show this to the PSU.

    fundsAvailable:
      description: |
        Equals true if sufficient funds are available at the time of the request, false otherwise.
        
        This datalemenet is allways contained in a confirmation of funds response.
        
        This data element is contained in a payment status response, 
        if supported by the ASPSP, if a funds check has been performed and 
        if the transactionStatus is "ACTC", "ACWC" or "ACCP".
      type: boolean


    hrefType:
      description: Link to a resource.
      type: object
      properties:
        href:
          $ref: "#/components/schemas/hrefEntry"

    hrefEntry:
      description: Link to a resource.
      type: string
      example: "/v1/payments/sepa-credit-transfers/1234-wertiq-983"
      
    accountReference:
      description: |
        Reference to an account by either
          * IBAN, of a payment accounts, or
          * BBAN, for payment accounts if there is no IBAN, or 
          * the Primary Account Number (PAN) of a card, can be tokenised by the ASPSP due to PCI DSS requirements, or
          * the Primary Account Number (PAN) of a card in a masked form, or
          * an alias to access a payment account via a registered mobile phone number (MSISDN).
      type: object
      properties:
        iban:
          $ref: "#/components/schemas/iban"
        bban:
          $ref: "#/components/schemas/bban"
        pan:
          $ref: "#/components/schemas/pan"
        maskedPan:
          $ref: "#/components/schemas/maskedPan"
        msisdn:
          $ref: "#/components/schemas/msisdn"
        currency:
          $ref: "#/components/schemas/currencyCode"
        cashAccountType:
          $ref: "#/components/schemas/cashAccountType"

  
#    accountReferenceIban:
#      type: object
#      description: |
#        Reference to an account by the Primary Account Number (PAN) of a card, 
#        can be tokenised by the ASPSP due to PCI DSS requirements.
#      required:
#        - iban
#      properties:
#        iban: 
#          $ref: "#/components/schemas/iban"
#        currency:
#          $ref: "#/components/schemas/currencyCode"

#    accountReferenceBban:
#      type: object
#      description: |
#        Reference to an Account.
#        
#        This data elements is used for payment accounts which have no IBAN.
#      required:
#        - bban
#      properties:
#        bban: 
#          $ref: "#/components/schemas/bban"
#        currency:
#          $ref: "#/components/schemas/currencyCode"

#    accountReferencePan:
#      type: object
#      description: |
#        Reference to an account by the Primary Account Number (PAN) of a card, 
#        can be tokenised by the ASPSP due to PCI DSS requirements. 
#      required:
#        - pan
#      properties:
#        pan: 
#          $ref: "#/components/schemas/pan"
#        currency:
#          $ref: "#/components/schemas/currencyCode"

#    accountReferenceMaskedPan:
#      type: object
#      description: |
#        Reference to an account by the Primary Account Number (PAN) of a card in a masked form.
#      required:
#        - maskedPan
#      properties:
#        maskedPan: 
#          $ref: "#/components/schemas/maskedPan"
#        currency:
#          $ref: "#/components/schemas/currencyCode"
#
#    accountReferenceMsisdn:
#      type: object
#      description: |
#        An alias to access a payment account via a registered mobile phone number.
#      required:
#        - msisdn
#      properties:
#        msisdn: 
#          $ref: "#/components/schemas/msisdn"
#        currency:
#          $ref: "#/components/schemas/currencyCode"

    balanceType:
      description: |
        The following balance types are defined:
          - "closingBooked": 
            Balance of the account at the end of the pre-agreed account reporting period. 
            It is the sum of the opening booked balance at the beginning of the period and all entries booked 
            to the account during the pre-agreed account reporting period.
            
            For card-accounts, this is composed of
            
              - invoiced, but not yet paid entries
            
          - "expected":
            Balance composed of booked entries and pending items known at the time of calculation, 
            which projects the end of day balance if everything is booked on the account and no other entry is posted.
            
            For card accounts, this is composed of:
              - invoiced, but not yet paid entries
              - not yet invoiced but already booked entries and
              - pending items (not yet booked)
            
            For card-accounts:
            
            "money to spend with the value of a pre-approved credit limit on the card account"
            
          - "openingBooked":
            Book balance of the account at the beginning of the account reporting period. 
            It always equals the closing book balance from the previous report.
          - "interimAvailable":
            Available balance calculated in the course of the account ?servicer?s business day, 
            at the time specified, and subject to further changes during the business day. 
            The interim balance is calculated on the basis of booked credit and debit items during the calculation 
            time/period specified.
            
            For card-accounts, this is composed of:
              - invoiced, but not yet paid entries
              - not yet invoiced but already booked entries
          - "interimBooked":
            Balance calculated in the course of the account servicer's business day, at the time specified, 
            and subject to further changes during the business day. 
            The interim balance is calculated on the basis of booked credit and debit items during the calculation time/period 
            specified.
          - "forwardAvailable":
            Forward available balance of money that is at the disposal of the account owner on the date specified.
          - "nonInvoiced": 
            Only for card accounts, to be checked yet.
          - "ownFunds":
            The amount of own funds on the account, which is at client's disposal. It does not include the allowed overdraft limit. Blocked amounts on the account and the minimum account balance are subtracted.
            
      type: string
      enum:
          - "closingBooked"
          - "expected"
          - "openingBooked"
          - "interimAvailable"
          - "interimBooked"
          - "forwardAvailable"
          - "nonInvoiced"
          - "ownFunds"

    accountAccess:
      description: |
        Requested access services for a consent.
      type: object
      properties:
        accounts:
          description: |
            Is asking for detailed account information. 
            
            If the array is empty in a request, the TPP is asking for an accessible account list. 
            This may be restricted in a PSU/ASPSP authorization dialogue. 
            If the array is empty, also the arrays for balances, additionalInformation sub attributes or transactions shall be empty, if used.
          type: array
          items:
            $ref: "#/components/schemas/accountReference"
        balances:
          description: |
            Is asking for balances of the addressed accounts.
            
            If the array is empty in the request, the TPP is asking for the balances of all accessible account lists. 
            This may be restricted in a PSU/ASPSP authorization dialogue. 
            If the array is empty, also the arrays for accounts, additionalInformation sub attributes or transactions shall be empty, if used.
          type: array
          items:
            $ref: "#/components/schemas/accountReference"
        transactions:
          description: |
            Is asking for transactions of the addressed accounts. 
            
            If the array is empty in the request, the TPP is asking for the transactions of all accessible account lists. 
            This may be restricted in a PSU/ASPSP authorization dialogue. 
            If the array is empty, also the arrays for accounts, additionalInformation sub attributes or balances shall be empty, if used.
          type: array
          items:
            $ref: "#/components/schemas/accountReference"
        additionalInformation:
          $ref: "#/components/schemas/additionalInformationAccess"
        availableAccounts:
          description: |
            Optional if supported by API provider.
            
            The values "allAccounts" and "allAccountsWithOwnerName" are admitted. 
            The support of the "allAccountsWithOwnerName" value by the ASPSP is optional.
          type: string
          enum:
            - "allAccounts"
            - "allAccountsWithOwnerName"
        availableAccountsWithBalance:
          description: |
            Optional if supported by API provider.
            
            The values "allAccounts" and "allAccountsWithOwnerName" are admitted. 
            The support of the "allAccountsWithOwnerName" value by the ASPSP is optional.
          type: string
          enum:
            - "allAccounts"
            - "allAccountsWithOwnerName"
        allPsd2:
          description: |
            Optional if supported by API provider.
            
            The values "allAccounts" and "allAccountsWithOwnerName" are admitted. 
            The support of the "allAccountsWithOwnerName" value by the ASPSP is optional.
          type: string
          enum:
            - "allAccounts"
            - "allAccountsWithOwnerName"
        restrictedTo:
          description: |
            If the TPP requests access to accounts via availableAccounts (List of available accounts), global 
            or bank driven consents, the TPP may include this element to restrict access to the referred 
            account types. Absence of the element is interpreted as "no restriction" (therefore access to 
            accounts of all types is requested). The element may only occur, if each of the elements 
              - accounts 
              - balances 
              - transactions 
            is either not present or contains an empty array. 
          type: array
          items:
            $ref: "#/components/schemas/cashAccountType"


    cashAccountType:
      description: |
        ExternalCashAccountType1Code from ISO 20022.
      type: string
#      enum:
#        - "CACC"
#        - "CARD"
#        - "CASH"
#        - "CHAR"
#        - "CISH"
#        - "COMM"
#        - "CPAC"
#        - "LLSV"
#        - "LOAN"
#        - "MGLD"
#        - "MOMA"
#        - "NREX"
#        - "ODFT"
#        - "ONDP"
#        - "OTHR"
#        - "SACC"
#        - "SLRY"
#        - "SVGS"
#        - "TAXE"
#        - "TRAN"
#        - "TRAS"

    accountStatus:
      description: |
        Account status. The value is one of the following:
          - "enabled": account is available
          - "deleted": account is terminated
          - "blocked": account is blocked e.g. for legal reasons
        If this field is not used, than the account is available in the sense of this specification.
      type: string
      enum:
        - "enabled"
        - "deleted"
        - "blocked"


    accountDetails:
      description: |
        The ASPSP shall give at least one of the account reference identifiers:
          - iban
          - bban
          - pan
          - maskedPan
          - msisdn
        If the account is a multicurrency account currency code in "currency" is set to "XXX".
      type: object
      required:
        - currency
      properties:
        resourceId:
          description: This shall be filled, if addressable resource are created by the ASPSP on the /accounts or /card-accounts endpoint.
          type: string
        iban:
          $ref: "#/components/schemas/iban"
        bban:
          $ref: "#/components/schemas/bban"
        msisdn:
          $ref: "#/components/schemas/msisdn"
        currency:
          $ref: "#/components/schemas/currencyCode"
        name:
          description: 
            Name of the account, as assigned by the ASPSP,
            in agreement with the account owner in order to provide an additional means of identification of the account.
          type: string
          maxLength: 70
        displayName:
          $ref: "#/components/schemas/displayName"
        product:
          description: Product name of the bank for this account, proprietary definition.
          type: string
          maxLength: 35
        cashAccountType:
          $ref: "#/components/schemas/cashAccountType"
        status:
          $ref: "#/components/schemas/accountStatus"
        bic:
          $ref: "#/components/schemas/bicfi"
        linkedAccounts:
          description: Case of a set of pending card transactions, the APSP will provide the relevant cash account the card is set up on.
          type: string
          maxLength: 70
        usage:
          description: |
            Specifies the usage of the account:
              * PRIV: private personal account
              * ORGA: professional account
          type: string
          maxLength: 4
          enum:
            - "PRIV"
            - "ORGA"
        details:
          description: |
            Specifications that might be provided by the ASPSP:
              - characteristics of the account
              - characteristics of the relevant card
          type: string
          maxLength: 500
        balances:
          $ref: "#/components/schemas/balanceList"
        _links:
          $ref: "#/components/schemas/_linksAccountDetails"
        ownerName:
          $ref: "#/components/schemas/ownerName"



    accountList:
      description: |
        List of accounts with details.
      type: object
      required:
        - accounts
      properties:
        accounts:
          type: array
          items:
            $ref: "#/components/schemas/accountDetails"



    accountReport:
      description: |
        JSON based account report.
        This account report contains transactions resulting from the query parameters.
        
        'booked' shall be contained if bookingStatus parameter is set to "booked" or "both".
        
        'pending' is not contained if the bookingStatus parameter is set to "booked" or "information".

        'information' Only contained if the bookingStatus is set to "information" and if supported by ASPSP.
      type: object
      required:
        - _links
      properties:
        booked:
          $ref: "#/components/schemas/transactionList"
        pending:
          $ref: "#/components/schemas/transactionList"
        information:
          $ref: "#/components/schemas/transactionList"
        paging:
          $ref: "#/components/schemas/transactionPaging"  
        _links:
          $ref: "#/components/schemas/_linksAccountReport"



    transactionList:
      description: Array of transaction details.
      type: array
      items: 
        $ref: "#/components/schemas/transactions"
        
    transactionPaging:
      description: Paging attributes for transaction list.
      type: object
      properties: 
        pageCount:
          description: Total number of pages returned for given search criteria.
          type: integer
        pageNumber:
          description: Number of current response page.
          type: integer
        pageSize:
          description: Requested page size.
          type: integer
        allRecords:
          description: Total number of entries found for given search criteria.
          type: integer


    transactionDetailsBody:
      description: Transaction details.
      type: object
      required:
        - transactionDetails
      properties:
        transactionDetails:
          $ref: "#/components/schemas/transactionsDetail"
        
        
  
          
        
      
    transactions:
      description: Transaction details.
      type: object
      required:
        - transactionAmount
      properties:
        transactionId:
          $ref: "#/components/schemas/transactionId"
        entryReference:
          $ref: "#/components/schemas/entryReference"
        endToEndId:
          description: Unique end to end identity.
          type: string
          maxLength: 35
        batchIndicator:
          description: |
            If this indicator equals true, then the related entry is a batch entry.
          type: boolean
        batchNumberOfTransactions:
          description: |
            Shall be used if and only if the batchIndicator is contained and equals true.
          type: integer
        mandateId:
          description: Identification of Mandates, e.g. a SEPA Mandate ID.
          type: string
          maxLength: 35
        checkId:
          description: Identification of a Cheque.
          type: string
          maxLength: 35
        creditorId:
          $ref: "#/components/schemas/creditorId"
        bookingDate:
          $ref: "#/components/schemas/bookingDate"
        valueDate:
          description: The Date at which assets become available to the account owner in case of a credit, or cease to be available to the account owner in case of a debit entry.
            **Usage:** If entry status is pending and value date is present, then the value date refers to an expected/requested value date.
          type: string
          format: date
        transactionAmount:
          $ref: "#/components/schemas/amount"
        currencyExchange:
          $ref: "#/components/schemas/reportExchangeRateList"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAccount:
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateCreditor:
          $ref: "#/components/schemas/ultimateCreditor"
        debtorName:
          $ref: "#/components/schemas/debtorName"
        debtorAccount:
          $ref: "#/components/schemas/accountReference"
        debtorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateDebtor:
          $ref: "#/components/schemas/ultimateDebtor"
        remittanceInformationUnstructured: 
          $ref: "#/components/schemas/remittanceInformationUnstructured"
        remittanceInformationUnstructuredArray: 
          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
        remittanceInformationStructured:
          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
        remittanceInformationStructuredArray:
          $ref: "#/components/schemas/remittanceInformationStructuredArray"
        entryDetails:
          $ref: "#/components/schemas/entryDetails"
        additionalInformation:
          $ref: "#/components/schemas/additionalInformation"
        additionalInformationStructured:
          $ref: "#/components/schemas/additionalInformationStructured"
        purposeCode:
          $ref: "#/components/schemas/purposeCode"
        bankTransactionCode:
          $ref: "#/components/schemas/bankTransactionCode"
        proprietaryBankTransactionCode:
          $ref: "#/components/schemas/proprietaryBankTransactionCode"
        balanceAfterTransaction: 
          $ref: "#/components/schemas/balance"
        intraday:
          description: |
            If this indicator equals true, then the booked entry comes from intraday processing and its parameters (transactionId included) might change in future. The entry will not change it's state.
          type: boolean
        documentNumber:
          type: string
        executionDate:
          type: string
          format: date
        cardNumber:
          type: string
        variableSymbol:
          type: string
        specificSymbol:
          type: string
        constantSymbol:
          type: string
        paymentStatus:
          type: string
        paymentCodeName:
          type: string
        paymentType:
          description: |
            Whether payment is of Debit or Credit type.
          type: string
          
        
        _links:
          $ref: "#/components/schemas/_linksTransactionDetails"
          
    transactionsDetail:
      description: Transaction details.
      type: object
      required:
        - transactionAmount
      properties:
        transactionId:
          $ref: "#/components/schemas/transactionId"
        entryReference:
          $ref: "#/components/schemas/entryReference"
        endToEndId:
          description: Unique end to end identity.
          type: string
          maxLength: 35
        batchIndicator:
          description: |
            If this indicator equals true, then the related entry is a batch entry.
          type: boolean
        batchNumberOfTransactions:
          description: |
            Shall be used if and only if the batchIndicator is contained and equals true.
          type: integer
        mandateId:
          description: Identification of Mandates, e.g. a SEPA Mandate ID.
          type: string
          maxLength: 35
        checkId:
          description: Identification of a Cheque.
          type: string
          maxLength: 35
        creditorId:
          $ref: "#/components/schemas/creditorId"
        bookingDate:
          $ref: "#/components/schemas/bookingDate"
        valueDate:
          description: The Date at which assets become available to the account owner in case of a credit, or cease to be available to the account owner in case of a debit entry.
            **Usage:** If entry status is pending and value date is present, then the value date refers to an expected/requested value date.
          type: string
          format: date
        transactionAmount:
          $ref: "#/components/schemas/amount"
        currencyExchange:
          $ref: "#/components/schemas/reportExchangeRateList"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAccount:
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateCreditor:
          $ref: "#/components/schemas/ultimateCreditor"
        debtorName:
          $ref: "#/components/schemas/debtorName"
        debtorAccount:
          $ref: "#/components/schemas/accountReference"
        debtorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateDebtor:
          $ref: "#/components/schemas/ultimateDebtor"
        remittanceInformationUnstructured: 
          $ref: "#/components/schemas/remittanceInformationUnstructured"
        remittanceInformationUnstructuredArray: 
          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
        remittanceInformationStructured:
          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
        remittanceInformationStructuredArray:
          $ref: "#/components/schemas/remittanceInformationStructuredArray"
        entryDetails:
          $ref: "#/components/schemas/entryDetails"
        additionalInformation:
          $ref: "#/components/schemas/additionalInformation"
        additionalInformationStructured:
          $ref: "#/components/schemas/additionalInformationStructured"
        purposeCode:
          $ref: "#/components/schemas/purposeCode"
        bankTransactionCode:
          $ref: "#/components/schemas/bankTransactionCode"
        proprietaryBankTransactionCode:
          $ref: "#/components/schemas/proprietaryBankTransactionCode"
        balanceAfterTransaction: 
          $ref: "#/components/schemas/balance"
        intraday:
          description: |
            If this indicator equals true, then the booked entry comes from intraday processing and its parameters (transactionId included) might change in future. The entry will not change it's state.
          type: boolean
        documentNumber:
          type: string
        executionDate:
          type: string
          format: date
        cardNumber:
          type: string
        variableSymbol:
          type: string
        specificSymbol:
          type: string
        constantSymbol:
          type: string
        paymentStatus:
          type: string
        paymentCodeName:
          type: string
        paymentType:
          description: |
            Whether payment is of Debit or Credit type.
          type: string
        
        authorizationDate:
          type: string
          format: date
        bulkPaymentId:
          type: string
        cashbackAmount:
          type: object
          required:
            - amount
          properties:
            amount:
              $ref: "#/components/schemas/amountValue"
        authorizedBy:
          type: string
        securityElement:
          type: string
        dealNumber:
          type: string
        directDebitSchema:
          type: string
        chargeBearer:
          type: string
        enteredThrough:
          type: string
        instructionForDebtorAgent:
          type: string
        createdDate:
          type: string
          format: date
        installmentPeriod:
          type: string
        interestRate:
          type: string
        mandateDate:
          type: string
          format: date
        mandateReference:
          type: string
        originalAmount:
          type: object
          required:
            - amount
          properties:
            amount:
              $ref: "#/components/schemas/amountValue"
        ultimateCreditorName:
          type: string
        ultimateDebtorName:
          type: string
        otherBankFee:
          type: string
        creditorAddress:
          type: string
        debtorAddress:
          type: string
        paymentPriority:
          type: string
        exchangeRate:
          type: string
        paymentServiceProviderName:
          type: string
        paymentServiceProviderId:
          type: string
        spotTrade:
          type: boolean
        transactionSource:
          type: string
        transactionStatus:
          type: string

        _links:
          $ref: "#/components/schemas/_linksTransactionDetails"  

 

    reportExchangeRateList:
      description: Array of exchange rates.
      type: array
      items: 
        $ref: "#/components/schemas/reportExchangeRate"


    reportExchangeRate:
      description: Exchange Rate.
      type: object
      required:
        - sourceCurrency
        - exchangeRate
        - unitCurrency
        - targetCurrency
        - quotationDate
      properties:
        sourceCurrency:
          $ref: "#/components/schemas/currencyCode"
        exchangeRate:
          type: string
        unitCurrency:
          type: string
        targetCurrency:
          $ref: "#/components/schemas/currencyCode"
        quotationDate:
          type: string
          format: date
        contractIdentification:
          type: string


    paymentExchangeRate:  
      description: Exchange Rate.
      type: object
      properties:
        unitCurrency:
          type: string
        exchangeRate:
          type: string
        contractIdentification:
          type: string
        rateType:
          type: string
          enum:
            - "SPOT"
            - "SALE"
            - "AGRD"


    balance:
      description: |
        A single balance element.
      type:
        object
      required:
        - balanceAmount
        - balanceType
      properties:
        balanceAmount:
          $ref: "#/components/schemas/amount"
        balanceType:
          $ref: "#/components/schemas/balanceType"
        creditLimitIncluded:
          description: |
            A flag indicating if the credit limit of the corresponding account 
            is included in the calculation of the balance, where applicable.
          type: boolean
          example: false
        lastChangeDateTime:
          description: |
            This data element might be used to indicate e.g. with the expected or booked balance that no action is known 
            on the account, which is not yet booked.
          type: string
          format: date-time
        referenceDate:
          description: Indicates the date of the balance.
          type: string
          format: date
        lastCommittedTransaction:
          description: |
            "entryReference" of the last commited transaction to support the TPP in identifying whether all 
            PSU transactions are already known.
          type: string
          maxLength: 35


    balanceList:
      description: |
        A list of balances regarding this account, e.g. the current balance, the last booked balance.
        The list might be restricted to the current balance.
      type: array
      items:
        $ref: "#/components/schemas/balance"


    bicfi: 
      description: |
        BICFI
      type: string
      pattern: '[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}'
      example: "AAAADEBBXXX"


    pan:
      description: |
        Primary Account Number according to ISO/IEC 7812.
      type: string
      maxLength: 35
      #According to ISO the following should be valid.
      #maxLength: 19
      #minLength: 8
      #pattern: "[0-9]{8,19}"
      example: "5409050000000000"


    maskedPan:
      description: |
        Masked Primary Account Number.
      type: string
      maxLength: 35
      example: "123456xxxxxx1234"


    bban:
      description: |
        Basic Bank Account Number (BBAN) Identifier.
        
        This data element can be used in the body of the consent request.
          Message for retrieving account access consent from this account. This
          data elements is used for payment accounts which have no IBAN.
          ISO20022: Basic Bank Account Number (BBAN). 
          
          Identifier used nationally by financial institutions, i.e., in individual countries, 
          generally as part of a National Account Numbering Scheme(s), 
          which uniquely identifies the account of a customer.
      type: string
      pattern: "[a-zA-Z0-9]{1,30}" 
      example: "BARC12345612345678"


    msisdn:
      type: string
      maxLength: 35
      description: Mobile phone number.
      example: "+49 170 1234567"


    iban:
      type: string
      description: IBAN of an account.
      pattern: "[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"
      example: "FR7612345987650123456789014"


    address:
      type: object
      required:
        - country
      properties:
        streetName:
          type: string
          maxLength: 70
        buildingNumber:
          type: string
        townName:
          type: string
        postCode:
          type: string
        country:
          $ref: "#/components/schemas/countryCode"
      example: 
        {
          streetName: "rue blue",
          buildingnNumber: "89",
          townName: "Paris",
          postCode: "75000",
          country: "FR"
        }


    countryCode:
      description: ISO 3166 ALPHA2 country code.
      type: string
      pattern: "[A-Z]{2}"
      example: "SE"



    ownerName:
      description: |
        Name of the legal account owner. 
        If there is more than one owner, then e.g. two names might be noted here.
        
        For a corporate account, the corporate name is used for this attribute.
        Even if supported by the ASPSP, the provision of this field might depend on the fact whether an explicit consent to this specific additional account information has been given by the PSU.
        
      type: string
      maxLength: 140
      example: "John Doe"
    


    displayName:
      description: |
        Name of the account as defined by the PSU within online channels.
      type: string
      maxLength: 70


    additionalInformationAccess:
      description: |
        Optional if supported by API provider.
        
        Is asking for additional information as added within this structured object.
        The usage of this data element requires at least one of the entries "accounts", 
        "transactions" or "balances" also to be contained in the object. 
        If detailed accounts are referenced, it is required in addition that any account addressed within 
        the additionalInformation attribute is also addressed by at least one of the attributes "accounts", 
        "transactions" or "balances".
      type: object
      properties:
        ownerName:
          description: |
            Is asking for account owner name of the accounts referenced within. 
            If the array is empty in the request, the TPP is asking for the account 
            owner name of all accessible accounts. 
            This may be restricted in a PSU/ASPSP authorization dialogue. 
            If the array is empty, also the arrays for accounts, balances or transactions shall be empty, if used.
            The ASPSP will indicate in the consent resource after a successful authorisation, 
            whether the ownerName consent can be accepted by providing the accounts on which the ownerName will 
            be delivered. 
            This array can be empty.
          type: array
          items:
            $ref: "#/components/schemas/accountReference"
        trustedBeneficiaries:
          description: |
            Optional if supported by API provider.
            Is asking for the trusted beneficiaries related to the accounts referenced within and related to the PSU.
            If the array is empty in the request, the TPP is asking for the lists of trusted beneficiaries of all accessible accounts. 
            This may be restricted in a PSU/ASPSP authorization dialogue by the PSU if also the account lists addressed 
            by the tags “accounts”, “balances” or “transactions” are empty.
            The ASPSP will indicate in the consent resource after a successful authorisation, 
            whether the trustedBeneficiaries consent can be accepted by providing the accounts on which the list of trusted beneficiaries will be delivered. 
            This array can be empty.
          type: array
          items:
            $ref: "#/components/schemas/accountReference"

    amount:
      type: object
      required:
        - currency
        - amount
      properties:
        currency:
          $ref: "#/components/schemas/currencyCode"
        amount:
          $ref: "#/components/schemas/amountValue"
      example: 
        {
          "currency": "EUR", 
          "amount": "123"
        }


    currencyCode:
      description: |
        ISO 4217 Alpha 3 currency code.
      type: string
      pattern: '[A-Z]{3}'
      example: "EUR"


    amountValue:
      description: |
        The amount given with fractional digits, where fractions must be compliant to the currency definition.
        Up to 14 significant figures. Negative amounts are signed by minus.
        The decimal separator is a dot.
        
        **Example:**
        Valid representations for EUR with up to two decimals are:
        
          * 1056
          * 5768.2
          * -1.50
          * 5877.78
      type: string
      pattern: "-?[0-9]{1,14}(\\.[0-9]{1,3})?"
      example: "5877.78"

    chargeBearer:
      description: Charge Bearer. ChargeBearerType1Code from ISO20022.
      type: string
      enum:
        - "DEBT"
        - "CRED"
        - "SHAR"
        - "SLEV"


    remittanceInformationStructuredMax140: 
      description: |
        Structured remittance information Max
      type: string
      maxLength: 140


    remittanceInformationStructured: 
      description: |
        Structured remittance information.
      type: object
      required:
        - reference
      properties:
        reference:
          type: string
          maxLength: 35
        referenceType:
          type: string
          maxLength: 35
        referenceIssuer:
          type: string
          maxLength: 35


    remittanceInformationStructuredArray:
      description: |
        Array of structured remittance information.
      type: array
      items:
        $ref: "#/components/schemas/remittanceInformationStructured"


    remittanceInformationUnstructured:
      description: |
        Unstructured remittance information.
      type: string
      maxLength: 140
      example: "Ref Number Merchant"

    remittanceInformationUnstructuredArray:
      description: |
        Array of unstructured remittance information.
      type: array
      items:
        $ref: "#/components/schemas/remittanceInformationUnstructured"
      example: ["Ref Number Merchant", "Some Other Text"]


    EntryDetailsElement:
      type: object
      required:
        - transactionAmount
      properties:
        endToEndId:
          description: Unique end to end identity.
          type: string
          maxLength: 35
        mandateId:
          description: Identification of Mandates, e.g. a SEPA Mandate ID.
          type: string
          maxLength: 35
        checkId:
          description: Identification of a Cheque.
          type: string
          maxLength: 35
        creditorId:
          $ref: "#/components/schemas/creditorId"
        transactionAmount:
           $ref: "#/components/schemas/amount"
        currencyExchange:
          $ref: "#/components/schemas/reportExchangeRateList"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAccount:
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateCreditor:
          $ref: "#/components/schemas/ultimateCreditor"
        debtorName:
          $ref: "#/components/schemas/debtorName"
        debtorAccount:
          $ref: "#/components/schemas/accountReference"
        debtorAgent:
          $ref: "#/components/schemas/bicfi"
        ultimateDebtor:
          $ref: "#/components/schemas/ultimateDebtor"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
        remittanceInformationUnstructuredArray:
          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
        remittanceInformationStructured:
          $ref: "#/components/schemas/remittanceInformationStructured"
        remittanceInformationStructuredArray:
          $ref: "#/components/schemas/remittanceInformationStructuredArray"
        purposeCode:
          $ref: "#/components/schemas/purposeCode"


    entryDetails:
      description: |
        Might be used by the ASPSP to transport details about transactions within a batch.
      type: array
      items:
        $ref: "#/components/schemas/EntryDetailsElement"
        



    additionalInformation:
      description: |
        Might be used by the ASPSP to transport additional transaction related information to the PSU
      type: string
      maxLength: 500
      example: "Some additional transaction related information."


    additionalInformationStructured:
      description: |
        Is used if and only if the bookingStatus entry equals "information". 
        Every active standing order related to the dedicated payment account result into one entry.
      type: object
      required:
        - standingOrderDetails
      properties:
        standingOrderDetails:
          $ref: "#/components/schemas/standingOrderDetails"


    standingOrderDetails:
      description: |
        Details of underlying standing orders.
      type: object
      required:
        - startDate
        - frequency
      properties:
        startDate:
          $ref: "#/components/schemas/startDate"
        frequency:
          $ref: "#/components/schemas/frequencyCode"
        endDate:
          $ref: "#/components/schemas/endDate"
        executionRule:
          $ref: "#/components/schemas/executionRule"
        withinAMonthFlag:
          description: |
            This element is only used in case of frequency equals "Monthly".
            
            If this element equals false it has no effect.
            If this element equals true, then the execution rule is overruled if the day of execution would fall into a different month using the execution rule.
            
            Example: executionRule equals "preceding", dayOfExecution equals "02" and the second of a month is a Sunday. 
            In this case, the transaction date would be on the last day of the month before.
             This would be overruled if withinAMonthFlag equals true and the payment is processed on Monday the third of the Month.
            Remark: This attribute is rarely supported in the market.
          type: boolean


        monthsOfExecution:
          $ref: "#/components/schemas/monthsOfExecution"
        multiplicator:
          description: |
            This is multiplying the given frequency resulting the exact frequency,
            e.g. Frequency=weekly and multiplicator=3 means every 3 weeks.
            Remark: This attribute is rarely supported in the market.
          type: integer
        dayOfExecution:
          $ref: "#/components/schemas/dayOfExecution"
        limitAmount:
          $ref: "#/components/schemas/amount"


    #####################################################
    # Predefined Text Formats
    #####################################################

    purposeCode:
      description: |
        ExternalPurpose1Code from ISO 20022.
        
        Values from ISO 20022 External Code List ExternalCodeSets_1Q2018 June 2018.
        
      type: string
      enum:
        - "BKDF"
        - "BKFE"
        - "BKFM"
        - "BKIP"
        - "BKPP"
        - "CBLK"
        - "CDCB"
        - "CDCD"
        - "CDCS"
        - "CDDP"
        - "CDOC"
        - "CDQC"
        - "ETUP"
        - "FCOL"
        - "MTUP"
        - "ACCT"
        - "CASH"
        - "COLL"
        - "CSDB"
        - "DEPT"
        - "INTC"
        - "LIMA"
        - "NETT"
        - "BFWD"
        - "CCIR"
        - "CCPC"
        - "CCPM"
        - "CCSM"
        - "CRDS"
        - "CRPR"
        - "CRSP"
        - "CRTL"
        - "EQPT"
        - "EQUS"
        - "EXPT"
        - "EXTD"
        - "FIXI"
        - "FWBC"
        - "FWCC"
        - "FWSB"
        - "FWSC"
        - "MARG"
        - "MBSB"
        - "MBSC"
        - "MGCC"
        - "MGSC"
        - "OCCC"
        - "OPBC"
        - "OPCC"
        - "OPSB"
        - "OPSC"
        - "OPTN"
        - "OTCD"
        - "REPO"
        - "RPBC"
        - "RPCC"
        - "RPSB"
        - "RPSC"
        - "RVPO"
        - "SBSC"
        - "SCIE"
        - "SCIR"
        - "SCRP"
        - "SHBC"
        - "SHCC"
        - "SHSL"
        - "SLEB"
        - "SLOA"
        - "SWBC"
        - "SWCC"
        - "SWPT"
        - "SWSB"
        - "SWSC"
        - "TBAS"
        - "TBBC"
        - "TBCC"
        - "TRCP"
        - "AGRT"
        - "AREN"
        - "BEXP"
        - "BOCE"
        - "COMC"
        - "CPYR"
        - "GDDS"
        - "GDSV"
        - "GSCB"
        - "LICF"
        - "MP2B"
        - "POPE"
        - "ROYA"
        - "SCVE"
        - "SERV"
        - "SUBS"
        - "SUPP"
        - "TRAD"
        - "CHAR"
        - "COMT"
        - "MP2P"
        - "ECPG"
        - "ECPR"
        - "ECPU"
        - "EPAY"
        - "CLPR"
        - "COMP"
        - "DBTC"
        - "GOVI"
        - "HLRP"
        - "HLST"
        - "INPC"
        - "INPR"
        - "INSC"
        - "INSU"
        - "INTE"
        - "LBRI"
        - "LIFI"
        - "LOAN"
        - "LOAR"
        - "PENO"
        - "PPTI"
        - "RELG"
        - "RINP"
        - "TRFD"
        - "FORW"
        - "FXNT"
        - "ADMG"
        - "ADVA"
        - "BCDM"
        - "BCFG"
        - "BLDM"
        - "BNET"
        - "CBFF"
        - "CBFR"
        - "CCRD"
        - "CDBL"
        - "CFEE"
        - "CGDD"
        - "CORT"
        - "COST"
        - "CPKC"
        - "DCRD"
        - "DSMT"
        - "DVPM"
        - "EDUC"
        - "FACT"
        - "FAND"
        - "FCPM"
        - "FEES"
        - "GOVT"
        - "ICCP"
        - "IDCP"
        - "IHRP"
        - "INSM"
        - "IVPT"
        - "MCDM"
        - "MCFG"
        - "MSVC"
        - "NOWS"
        - "OCDM"
        - "OCFG"
        - "OFEE"
        - "OTHR"
        - "PADD"
        - "PTSP"
        - "RCKE"
        - "RCPT"
        - "REBT"
        - "REFU"
        - "RENT"
        - "REOD"
        - "RIMB"
        - "RPNT"
        - "RRBN"
        - "RVPM"
        - "SLPI"
        - "SPLT"
        - "STDY"
        - "TBAN"
        - "TBIL"
        - "TCSC"
        - "TELI"
        - "TMPG"
        - "TPRI"
        - "TPRP"
        - "TRNC"
        - "TRVC"
        - "WEBI"
        - "ANNI"
        - "CAFI"
        - "CFDI"
        - "CMDT"
        - "DERI"
        - "DIVD"
        - "FREX"
        - "HEDG"
        - "INVS"
        - "PRME"
        - "SAVG"
        - "SECU"
        - "SEPI"
        - "TREA"
        - "UNIT"
        - "FNET"
        - "FUTR"
        - "ANTS"
        - "CVCF"
        - "DMEQ"
        - "DNTS"
        - "HLTC"
        - "HLTI"
        - "HSPC"
        - "ICRF"
        - "LTCF"
        - "MAFC"
        - "MARF"
        - "MDCS"
        - "VIEW"
        - "CDEP"
        - "SWFP"
        - "SWPP"
        - "SWRS"
        - "SWUF"
        - "ADCS"
        - "AEMP"
        - "ALLW"
        - "ALMY"
        - "BBSC"
        - "BECH"
        - "BENE"
        - "BONU"
        - "CCHD"
        - "COMM"
        - "CSLP"
        - "GFRP"
        - "GVEA"
        - "GVEB"
        - "GVEC"
        - "GVED"
        - "GWLT"
        - "HREC"
        - "PAYR"
        - "PEFC"
        - "PENS"
        - "PRCP"
        - "RHBS"
        - "SALA"
        - "SSBE"
        - "LBIN"
        - "LCOL"
        - "LFEE"
        - "LMEQ"
        - "LMFI"
        - "LMRK"
        - "LREB"
        - "LREV"
        - "LSFL"
        - "ESTX"
        - "FWLV"
        - "GSTX"
        - "HSTX"
        - "INTX"
        - "NITX"
        - "PTXP"
        - "RDTX"
        - "TAXS"
        - "VATX"
        - "WHLD"
        - "TAXR"
        - "B112"
        - "BR12"
        - "TLRF"
        - "TLRR"
        - "AIRB"
        - "BUSB"
        - "FERB"
        - "RLWY"
        - "TRPT"
        - "CBTV"
        - "ELEC"
        - "ENRG"
        - "GASB"
        - "NWCH"
        - "NWCM"
        - "OTLC"
        - "PHON"
        - "UBIL"
        - "WTER"


    bankTransactionCode: 
      description: |
        Bank transaction code as used by the ASPSP and using the sub elements of this structured code defined by ISO 20022. 
        
        This code type is concatenating the three ISO20022 Codes 
          * Domain Code, 
          * Family Code, and 
          * SubFamiliy Code 
        by hyphens, resulting in 'DomainCode'-'FamilyCode'-'SubFamilyCode'.
        For standing order reports the following codes are applicable:
          * "PMNT-ICDT-STDO" for credit transfers,
          * "PMNT-IRCT-STDO"  for instant credit transfers
          * "PMNT-ICDT-XBST" for cross-border credit transfers
          * "PMNT-IRCT-XBST" for cross-border real time credit transfers and
          * "PMNT-MCOP-OTHR" for specific standing orders which have a dynamical amount to move left funds e.g. on month end to a saving account
        
      type: string
      example: "PMNT-RDDT-ESDD"


    proprietaryBankTransactionCode:
      description: |
        Proprietary bank transaction code as used within a community or within an ASPSP e.g. 
        for MT94x based transaction reports.
      type: string
      maxLength: 35
  
 
    frequencyCode:
      description: |
        The following codes from the "EventFrequency7Code" of ISO 20022 are supported:
        - "Daily"
        - "Weekly"
        - "EveryTwoWeeks"
        - "Monthly"
        - "EveryTwoMonths"
        - "Quarterly"
        - "SemiAnnual"
        - "Annual"
        - "MonthlyVariable"
      type: string
      enum:
        - "Daily"
        - "Weekly"
        - "EveryTwoWeeks"
        - "Monthly"
        - "EveryTwoMonths"
        - "Quarterly"
        - "SemiAnnual"
        - "Annual"
        - "MonthlyVariable"


    frequencyPerDay:
      description: |
        This field indicates the requested maximum frequency for an access without PSU involvement per day.
        For a one-off access, this attribute is set to "1".
        
        The frequency needs to be greater equal to one. 
        
        If not otherwise agreed bilaterally between TPP and ASPSP, the frequency is less equal to 4.
      type: integer
      example: 4
      minimum: 1
      exclusiveMinimum: false


    dayOfExecution:
      description: |
        Day of execution as string.
        
        This string consists of up two characters.
        Leading zeroes are not allowed.
        
        31 is ultimo of the month.
      type: string
      maxLength: 2
      enum: 
        - "1"
        - "2"
        - "3"
        - "4"
        - "5"
        - "6"
        - "7"
        - "8"
        - "9"
        - "10"
        - "11"
        - "12"
        - "13"
        - "14"
        - "15"
        - "16"
        - "17"
        - "18"
        - "19"
        - "20"
        - "21"
        - "22"
        - "23"
        - "24"
        - "25"
        - "26"
        - "27"
        - "28"
        - "29"
        - "30"
        - "31"


    monthsOfExecution:
      description: |
        The format is following the regular expression \d{1,2}. 
        The array is restricted to 11 entries. 
        The values contained in the array entries shall all be different and the maximum value of one entry is 12.
        This attribute is contained if and only if the frequency equals "MonthlyVariable".
        Example: An execution on January, April and October each year is addressed by ["1", "4", "10"].
      type: array
      items:
        type: string
        maxLength: 2
        maxItems: 11
        enum:
        - "1"
        - "2"
        - "3"
        - "4"
        - "5"
        - "6"
        - "7"
        - "8"
        - "9"
        - "10"
        - "11"
        - "12"



    executionRule:
      description: |
        "following" or "preceding" supported as values. 
        This data attribute defines the behaviour when recurring payment dates falls on a weekend or bank holiday. 
        The payment is then executed either the "preceding" or "following" working day.
        ASPSP might reject the request due to the communicated value, if rules in Online-Banking are not supporting 
        this execution rule.
      type: string
      enum:
        - "following"
        - "preceding"

    psuMessageText:
      description: Text to be displayed to the PSU.
      type: string
      maxLength: 500
    
    creditorName:
      description: Creditor name.
      type: string
      maxLength: 70
      example: "Creditor Name"

    creditorId:
      description: Identification of Creditors, e.g. a SEPA Creditor ID.
      type: string
      maxLength: 35
      example: "Creditor Id 5678"

    creditorAgentName:
      description: Creditor agent name.
      type: string
      maxLength: 70
      example: "Creditor Agent Name"

    debtorName:
      description: Debtor name.
      type: string
      maxLength: 70
      example: "Debtor Name"

    ultimateDebtor:
      description: Ultimate debtor.
      type: string
      maxLength: 70
      example: "Ultimate Debtor"
  
    ultimateCreditor:
      description: Ultimate creditor.
      type: string
      maxLength: 70
      example: "Ultimate Creditor"

    #####################################################
    # Predefined Date and Time Related Formats
    #####################################################
   

    startDate:
      description: |
        The first applicable day of execution starting from this date is the first payment.
      type: string
      format: date

    endDate:
      description: |
        The last applicable day of execution.
        If not given, it is an infinite standing order.
      type: string
      format: date

    bookingDate:
      description: |
        The date when an entry is posted to an account on the ASPSPs books.
      type: string
      format: date

    validUntil:
      description: |
        This parameter is defining a valid until date (including the mentioned date) for the requested consent. 
        The content is the local ASPSP date in ISO-Date format, e.g. 2017-10-30.
        
        Future dates might get adjusted by ASPSP. 
        
        If a maximal available date is requested, a date in far future is to be used: "9999-12-31". 
        
        In both cases the consent object to be retrieved by the get consent request will contain the adjusted date.
      type: string
      format: date
      example: "2020-12-31"

    lastActionDate:
      description: |
        This date is containing the date of the last action on the consent object either through 
        the XS2A interface or the PSU/ASPSP interface having an impact on the status.
      type: string
      format: date
      example: "2018-07-01"


#####################################################
# Content of Request Bodies
#####################################################



    #####################################################
    # Content of Request Bodies - JSON
    #####################################################

    paymentInitiation_json: 
      description: |
        Generic Body for a payment initation via JSON.
        
        This generic JSON body can be used to represent valid payment initiations for the following JSON based payment product, 
        which where defined in the Implementation Guidelines:
        
          * sepa-credit-transfers
          * instant-sepa-credit-transfers
          * target-2-payments
          * cross-border-credit-transfers
        
        For the convenience of the implementer additional which are already predefinded in the Implementation Guidelines 
        are included (but commented in source code), such that an ASPSP may add them easily.
        
        Take care: Since the format is intended to fit for all payment products 
        there are additional conditions which are NOT covered by this specification.
        Please check the Implementation Guidelines for detailes.

        
        The following data element are depending on the actual payment product available (in source code):
                  
         <table style="width:100%">
         <tr><th>Data Element</th><th>SCT EU Core</th><th>SCT INST EU Core</th><th>Target2 Paym. Core</th><th>Cross Border CT Core</th></tr>
         <tr><td>endToEndIdentification</td><td> optional</td> <td>optional</td> <td>optional</td> <td>n.a.</td> </tr>
         <tr><td>instructionIdentification</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorAccount</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>optional</td> </tr>
         <tr><td>debtorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateDebtor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>instructedAmount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>transactionCurrency</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>exchangeRateInformation</td> <td>n.a.</td> <td>n.a.</td><td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAccount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorAgent</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorAgentName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorName</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAddress</td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorNameAndAddress</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateCreditor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>purposeCode</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>chargeBearer</td> <td>n.a.</td> <td>n.a.</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>remittanceInformationUnstructured</td> <td>optional</td> <td>optional</td> <td> optional</td> <td>optional</td> </tr>
         <tr><td>remittanceInformationUnstructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructured</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>requestedExecutionDate</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>requestedExecutionTime</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
            </td></tr>
          </table>
          
        IMPORTANT: In this API definition the following holds:
          *  All data elements mentioned above are defined, but some of them are commented, 
            i.e. they are only visible in the source code and can be used by uncommenting them.
          * Data elements which are mandatory in the table above for all payment products 
            are set to be mandatory in this specification.
          * Data elements which are indicated in the table above as n.a. for all payment products are commented in the source code.
          * Data elements which are indicated to be option, conditional or mandatory for at least one payment product 
            in the table above are set to be optional in the s specification except the case where all are definde to be mandatory. 
          * Data element which are inticated to be n.a. can be used by the ASPS if needed. 
            In this case uncomment tthe the relatetd lines in the source code.
          * If one uses this data types for some payment products he has to ensure that the used data type is 
            valid according to the underlying payment product, e.g. by some appropriate validations.

      type: object
      required:
        - instructedAmount
        - creditorAccount
        - creditorName
      properties:
        endToEndIdentification:
          type: string
          maxLength: 35
#        instructionIdentification: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          maxLength: 35
#        debtorName: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorName"
        debtorAccount: 
          $ref: "#/components/schemas/accountReference"
#        debtorId: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorId"
#        ultimateDebtor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateDebtor"
        instructedAmount:
          $ref: "#/components/schemas/amount"
#        transactionCurrency: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/currencyCode"
#        exchangeRateInformation: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/paymentExchangeRate"
        creditorAccount: 
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        creditorAgentName:
          $ref: "#/components/schemas/creditorAgentName"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAddress:
          $ref: "#/components/schemas/address"
#        creditorId: # N.A. for all, but can be used by ASPSP if needed
#          description: Identification of Creditors, e.g. a SEPA Creditor ID.
#          type: string
#          maxLength: 35
#        creditorNameAndAddress: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/creditorNameAndAddress"
#        ultimateCreditor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateCreditor"
#        purposeCode: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/purposeCode"
        chargeBearer: #In some payment product N.A. in some Optional in some conditional
          $ref: "#/components/schemas/chargeBearer"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
#        remittanceInformationUnstructuredArray:
#          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
#        remittanceInformationStructured: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
#        remittanceInformationStructuredArray: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredArray"
        requestedExecutionDate: # N.A. for all, but can be used by ASPSP if needed
          type: string
          format: date
#        requestedExecutionTime: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          format: date-time


    paymentInitiationBulkElement_json:
      description: |
        Generic body for a bulk payment initation entry.
        
        The bulk entry type is a type which follows the JSON formats for the supported products for single payments
        excluding the data elements (if supported):
          * debtorAccount
          * requestedExecutionDate,
          * requestedExecutionTime.
        These data elements may not be contained in any bulk entry.

        This data object can be used to represent valid bulk payment initiations entry for the following JSON based payment product, 
        which where defined in the Implementation Guidelines:
        
          * sepa-credit-transfers
          * instant-sepa-credit-transfers
          * target-2-payments
          * cross-border-credit-transfers
        
        For the convenience of the implementer additional which are already predefinded in the Implementation Guidelines 
        are included (but commented in source code), such that an ASPSP may add them easily.
        
        Take care: Since the format is intended to fit for all payment products 
        there are additional conditions which are NOT covered by this specification.
        Please check the Implementation Guidelines for detailes.

        
        The following data element are depending on the actual payment product available (in source code):
                  
         <table style="width:100%">
         <tr><th>Data Element</th><th>SCT EU Core</th><th>SCT INST EU Core</th><th>Target2 Paym. Core</th><th>Cross Border CT Core</th></tr>
         <tr><td>endToEndIdentification</td><td> optional</td> <td>optional</td> <td>optional</td> <td>n.a.</td> </tr>
         <tr><td>instructionIdentification</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateDebtor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>instructedAmount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>transactionCurrency</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>exchangeRateInformation</td> <td>n.a.</td> <td>n.a.</td><td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAccount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorAgent</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorAgentName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorName</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAddress</td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorNameAndAddress</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateCreditor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>purposeCode</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>chargeBearer</td> <td>n.a.</td> <td>n.a.</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>remittanceInformationUnstructured</td> <td>optional</td> <td>optional</td> <td> optional</td> <td>optional</td> </tr>
         <tr><td>remittanceInformationUnstructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructured</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
            </td></tr>
          </table>
          
        IMPORTANT: In this API definition the following holds:
          *  All data elements mentioned above are defined, but some of them are commented, 
            i.e. they are only visible in the source code and can be used by uncommenting them.
          * Data elements which are mandatory in the table above for all payment products 
            are set to be mandatory in this specification.
          * Data elements which are indicated in the table above as n.a. for all payment products are commented in the source code.
          * Data elements which are indicated to be option, conditional or mandatory for at least one payment product 
            in the table above are set to be optional in the s specification except the case where all are definde to be mandatory. 
          * Data element which are inticated to be n.a. can be used by the ASPS if needed. 
            In this case uncomment tthe the relatetd lines in the source code.
          * If one uses this data types for some payment products he has to ensure that the used data type is 
            valid according to the underlying payment product, e.g. by some appropriate validations.

      type: object
      required:
        - instructedAmount
        - creditorAccount
        - creditorName
      properties:
        endToEndIdentification:
          type: string
          maxLength: 35
#        instructionIdentification: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          maxLength: 35
#        debtorName: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorName"
#        debtorId: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorId"
#        ultimateDebtor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateDebtor"
        instructedAmount:
          $ref: "#/components/schemas/amount"
#        transactionCurrency: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/currencyCode"
#        exchangeRateInformation: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/paymentExchangeRate"
        creditorAccount: 
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        creditorAgentName:
          $ref: "#/components/schemas/creditorAgentName"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAddress:
          $ref: "#/components/schemas/address"
#        creditorId:  # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/creditorId"
#        creditorNameAndAddress: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/creditorNameAndAddress"
#        ultimateCreditor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateCreditor"
#        purposeCode: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/purposeCode"
#        chargeBearer: #In some payment product N.A. in some Optional in some conditional
#          $ref: "#/components/schemas/chargeBearer"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
#        remittanceInformationUnstructuredArray:
#          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
#        remittanceInformationStructured: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
#        remittanceInformationStructuredArray: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredArray"


    periodicPaymentInitiation_json: 
      description: |
        Generic Body for a periodic payment initation via JSON.
        
        This generic JSON body can be used to represent valid periodic payment initiations for the following JSON based payment product, 
        which where defined in the Implementation Guidelines:
        
          * sepa-credit-transfers
          * instant-sepa-credit-transfers
          * target-2-payments
          * cross-border-credit-transfers
        
        For the convenience of the implementer additional which are already predefinded in the Implementation Guidelines 
        are included (but commented in source code), such that an ASPSP may add them easily.
        
        Take care: Since the format is intended to fit for all payment products 
        there are additional conditions which are NOT covered by this specification.
        Please check the Implementation Guidelines for detailes.

        
        The following data element are depending on the actual payment product available (in source code):
                  
         <table style="width:100%">
         <tr><th>Data Element</th><th>SCT EU Core</th><th>SCT INST EU Core</th><th>Target2 Paym. Core</th><th>Cross Border CT Core</th></tr>
         <tr><td>endToEndIdentification</td><td> optional</td> <td>optional</td> <td>optional</td> <td>n.a.</td> </tr>
         <tr><td>instructionIdentification</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>debtorAccount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>debtorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateDebtor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>instructedAmount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>transactionCurrency</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>exchangeRateInformation</td> <td>n.a.</td> <td>n.a.</td><td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAccount</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorAgent</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorAgentName</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorName</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>creditorId</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>creditorAddress</td>optional</td> <td>optional</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>creditorNameAndAddress</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>ultimateCreditor</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>purposeCode</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>chargeBearer</td> <td>n.a.</td> <td>n.a.</td> <td>optional</td> <td>conditional </td> </tr>
         <tr><td>remittanceInformationUnstructured</td> <td>optional</td> <td>optional</td> <td> optional</td> <td>optional</td> </tr>
         <tr><td>remittanceInformationUnstructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructured</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>remittanceInformationStructuredArray</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>requestedExecutionDate</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>requestedExecutionTime</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> <td>n.a.</td> </tr>
         <tr><td>startDate</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>executionRule</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>optional</td> </tr>
         <tr><td>endDate</td> <td>optional</td> <td>optional</td> <td>optional</td> <td>optional</td> </tr>
         <tr><td>frequency</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> <td>mandatory</td> </tr>
         <tr><td>dayOfExecution</td> <td>conditional</td> <td>conditional</td> <td>conditional</td> <td>conditional</td> </tr>
            </td></tr>
          </table>
          
        IMPORTANT: In this API definition the following holds:
          *  All data elements mentioned above are defined, but some of them are commented, 
            i.e. they are only visible in the source code and can be used by uncommenting them.
          * Data elements which are mandatory in the table above for all payment products 
            are set to be mandatory in this specification.
          * Data elements which are indicated in the table above as n.a. for all payment products are commented in the source code.
          * Data elements which are indicated to be option, conditional or mandatory for at least one payment product 
            in the table above are set to be optional in the s specification except the case where all are definde to be mandatory. 
          * Data element which are inticated to be n.a. can be used by the ASPS if needed. 
            In this case uncomment tthe the relatetd lines in the source code.
          * If one uses this data types for some payment products he has to ensure that the used data type is 
            valid according to the underlying payment product, e.g. by some appropriate validations.

      type: object
      required:
        - debtorAccount
        - instructedAmount
        - creditorAccount
        - creditorName
        - startDate
        - frequency
      properties:
        endToEndIdentification: 
          type: string
          maxLength: 35
#        instructionIdentification:  # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          maxLength: 35
#        debtorName: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorName"
#        debtorId: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorId"
        debtorAccount: 
          $ref: "#/components/schemas/accountReference"
#        ultimateDebtor:  # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateDebtor"
        instructedAmount:
          $ref: "#/components/schemas/amount"
        creditorAccount: 
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
#        creditorId: # N.A. for all, but can be used by ASPSP if needed
#          description: Identification of Creditors, e.g. a SEPA Creditor ID.
#          type: string
#          maxLength: 35
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAddress:
          $ref: "#/components/schemas/address"
#        ultimateCreditor:  # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateCreditor"
#        purposeCode:  # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/purposeCode"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
#        remittanceInformationUnstructuredArray:
#          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
#        remittanceInformationStructured:   # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
#        remittanceInformationStructuredArray: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredArray"
#        requestedExecutionDate:  # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          format: date
#        requestedExecutionTime:  # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          format: date-time
        #Additional Information for periodic payments
        startDate:
          $ref: "#/components/schemas/startDate"
        endDate:
          $ref: "#/components/schemas/endDate"
        executionRule:
          $ref: "#/components/schemas/executionRule"
        frequency:
          $ref: "#/components/schemas/frequencyCode"
        dayOfExecution:
          $ref: "#/components/schemas/dayOfExecution"


    bulkPaymentInitiation_json: 
      description: |
        Generic Body for a bulk payment initation via JSON.
        
        paymentInformationId is contained in code but commented since it is n.a. 
        and not all ASPSP are able to support this field now.
        In a later version the field will be mandatory.
      type: object
      required:
        - payments
        - debtorAccount
        #- paymentInformationId
      properties:
        batchBookingPreferred:
          $ref: "#/components/schemas/batchBookingPreferred"
        debtorAccount:
          $ref: "#/components/schemas/accountReference"
#        paymentInformationId:
#          description: |
#            Unique identification as assigned by the sending party to unambiguously identify this bulk payment.
#          type: string
#          maxLength: 35
        requestedExecutionDate:
          type: string
          format: date
        requestedExecutionTime:
          type: string
          format: date-time
        payments:
          description: |
            A list of generic JSON bodies payment initations for bulk payments via JSON.
            
            Note: Some fields from single payments do not occcur in a bulk payment element
          type: array
          items:
            $ref: "#/components/schemas/paymentInitiationBulkElement_json"


    confirmationOfFunds:
      description: |
        JSON Request body for the "Confirmation of funds service".
        
        <table> 
        <tr> 
          <td>cardNumber</td> 
          <td>String </td>
          <td>Optional</td>
          <td>Card Number of the card issued by the PIISP. Should be delivered if available.</td>
        </tr> 
        <tr>
          <td>account</td>
          <td> Account Reference</td>
          <td>Mandatory</td>
          <td>PSU's account number.</td>
        </tr> 
        <tr> 
          <td>payee</td>
          <td>Max70Text</td>
          <td>Optional</td>
          <td>The merchant where the card is accepted as an information to the PSU.</td>
        </tr> 
        <tr>
          <td>instructedAmount</td>
          <td>Amount</td>
          <td>Mandatory</td>
          <td>Transaction amount to be checked within the funds check mechanism.</td>
        </tr> 
        </table>
      type: object
      required:
        - account
        - instructedAmount
      properties:
        cardNumber:
          description: |
            Card Number of the card issued by the PIISP. 
            Should be delivered if available.
          type: string
          maxLength: 35
        account:
          $ref: "#/components/schemas/accountReference"
        payee:
          description: Name payee.
          type: string
          maxLength: 70
        instructedAmount:
          $ref: "#/components/schemas/amount"


    consents:
      description: |
        Content of the body of a consent request.
      type: object
      required:
        - access
        - recurringIndicator
        - validUntil
        - frequencyPerDay
        - combinedServiceIndicator
      properties:
        access:
          $ref: "#/components/schemas/accountAccess"
        recurringIndicator:
          $ref: "#/components/schemas/recurringIndicator"
        validUntil:
          $ref: "#/components/schemas/validUntil"
        frequencyPerDay:
          $ref: "#/components/schemas/frequencyPerDay"
        combinedServiceIndicator:
          description: |
            If "true" indicates that a payment initiation service will be addressed in the same "session".
          type: boolean
          example: false


    #####################################################
    # Content of Request Bodies - XML
    #####################################################

      #####################################################
      # Content of Request Bodies - Single Part
      #####################################################

    paymentInitiationSct_pain.001: #The same schemas are use for single a bulk payment in case of a pain.001
      description: |
        A pain.001 structure corresponding to the SCT schema
        
        urn:iso:std:iso:20022:tech:xsd:pain.001.001.03
      type: string
      example:
        <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
          <CstmrCdtTrfInitn>
            <GrpHdr>
              <MsgId>MIPI-123456789RI-123456789</MsgId>
              <CreDtTm>2017-02-14T20:23:34.000Z</CreDtTm>
              <NbOfTxs>1</NbOfTxs>
              <CtrlSum>123</CtrlSum>
              <InitgPty>
                <Nm>PaymentInitiator</Nm>
                <Id><OrgId><Othr><Id>DE10000000012</Id>
                  <SchmeNm><Prptry>PISP</Prptry></SchmeNm></Othr></OrgId></Id>
              </InitgPty>
            </GrpHdr> 
            <PmtInf> 
              <PmtInfId>BIPI-123456789RI-123456789</PmtInfId>
              <PmtMtd>TRF</PmtMtd> 
              <NbOfTxs>1</NbOfTxs>
              <CtrlSum>123</CtrlSum>
              <PmtTpInf><SvcLvl><Cd>SEPA</Cd></SvcLvl></PmtTpInf>
              <ReqdExctnDt>2017-02-15</ReqdExctnDt>
              <Dbtr><Nm>PSU Name</Nm></Dbtr>
              <DbtrAcct><Id><IBAN>DE87200500001234567890</IBAN></Id></DbtrAcct>
              <ChrgBr>SLEV</ChrgBr>
              <CdtTrfTxInf>
                <PmtId><EndToEndId>RI-123456789</EndToEndId></PmtId> 
                <Amt><InstdAmt Ccy="EUR">123</InstdAmt></Amt>
                <Cdtr><Nm>Merchant123</Nm></Cdtr>
                <CdtrAcct><Id><IBAN> DE23100120020123456789</IBAN></Id></CdtrAcct>
                <RmtInf><Ustrd>Ref Number Merchant-123456</Ustrd></RmtInf>
              </CdtTrfTxInf>
            </PmtInf>
          </CstmrCdtTrfInitn>
        </Document>

    paymentInitiationSctInst_pain.001: #The same schemas are use for single a bulk payment in case of a pain.001
      description: |
        A pain.001 structure corresponding to the SCT INST schema.
      type: string

    paymentInitiationTarget2_pain.001: #The same schemas are use for single a bulk payment in case of a pain.001
      description: |
        A pain.001 structure corresponding to the target-2 schema.
        
        For TARGET-2 payments only community wide pain.001 schemes do exist.
      type: string

    paymentInitiationCrossBorder_pain.001: #The same schemas are use for single a bulk payment in case of a pain.001
      description: |
        A pain.001 structure corresponding to the cross-border schema.

        For cross-border payments only community wide pain.001 schemes do exist.
      type: string

      #####################################################
      # Content of Request Bodies - XML -Multipart
      #####################################################

    periodicPaymentInitiationMultipartBody:
      description: |
       The multipart message definition for the initiation of a periodic payment initiation 
       where the information of the payment is contained in a pain.001 message (Part 1) and 
       the additional informations related to the periodic payment is an additional JSON message (Part 2).
      type: object
      properties:
        xml_sct: #PART 1
          oneOf: #The same schemas are used for single and bulk payment in case of a pain.001
            - $ref: "#/components/schemas/paymentInitiationSct_pain.001"
            - $ref: "#/components/schemas/paymentInitiationSctInst_pain.001"
            - $ref: "#/components/schemas/paymentInitiationTarget2_pain.001"
            - $ref: "#/components/schemas/paymentInitiationCrossBorder_pain.001"
        json_standingorderType: #PART 2
          $ref: "#/components/schemas/periodicPaymentInitiation_xml-Part2-standingorderType_json"

    periodicPaymentInitiation_xml-Part2-standingorderType_json:
      description: |
        The body part 2 of a periodic payment initation request containes the execution related informations 
        of the periodic payment.
      type: object
      required:
        - startDate
        - frequency
      properties:
        startDate:
          $ref: "#/components/schemas/startDate"
        endDate:
          $ref: "#/components/schemas/endDate"
        executionRule:
          $ref: "#/components/schemas/executionRule"
        frequency:
          $ref: "#/components/schemas/frequencyCode"
        dayOfExecution:
          $ref: "#/components/schemas/dayOfExecution"


#####################################################
# Content of Response Bodies
#####################################################

#################################################################

  
 
        
          
      




#################################################################


    paymentInitiationStatusResponse-200_json:
      description: Body of the response for a successful payment initiation status request in case of an JSON based endpoint.
      type: object
      required:
        - transactionStatus
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        fundsAvailable:
          $ref: "#/components/schemas/fundsAvailable"
        psuMessage:
          $ref: "#/components/schemas/psuMessageText"
        _links:
          $ref: "#/components/schemas/_linksPaymentInitiationStatus"
        tppMessage:
          type: array
          items: 
            $ref: "#/components/schemas/tppMessageGeneric"
          description: Messages to the TPP on operational issues.


    paymentInitiationStatusResponse-200_xml:
      description: |
        Body of the response for a successful payment initiation status request in case of an XML based endpoint.
        
        The status is returned as a pain.002 structure. 
        
        urn:iso:std:iso:20022:tech:xsd:pain.002.001.03
        
        The chosen XML schema of the status request is following the XML schema definitions of the original pain.001 schema.
      type: string

    paymentInitiationStatusResponse-202_json:
      description: Body of the response for a successful payment initiation status request in case of an JSON based endpoint.
      type: object
      required:
        - transactionStatus
        - tppMessage
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        fundsAvailable:
          $ref: "#/components/schemas/fundsAvailable"
        psuMessage:
          $ref: "#/components/schemas/psuMessageText"
        _links:
          $ref: "#/components/schemas/_linksPaymentInitiationStatus"
        tppMessage:
          type: array
          items: 
            $ref: "#/components/schemas/tppMessageInitiationStatusResponse-202"
          description: Messages to the TPP on operational issues.



    paymentInitationRequestResponse-201:
      description: Body of the response for a successful payment initiation request.
      type: object
      required:
        - transactionStatus
        - paymentId
        - _links
      
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        paymentId:
          $ref: "#/components/schemas/paymentId"
        transactionFees:
          # description: |
          #   Might be used by the ASPSP to transport the transaction fees relevant for the underlying payments.
          #   This field includes the entry of the currencyConversionFees if applicable. 
          $ref: "#/components/schemas/amount"
        currencyConversionFee:
          # description: Might be used by the ASPSP to transport specific currency conversion fees related to the initiated credit transfer.
          $ref: "#/components/schemas/amount"
        estimatedTotalAmount:
          # description: The amount which is estimated to be debted from the debtor account. Note: This amount includes fees.
          $ref: "#/components/schemas/amount"
        estimatedInterbankSettlementAmount:
          # description: The estimated amount to be transferred to the payee.
          $ref: "#/components/schemas/amount"
        transactionFeeIndicator:
          $ref: "#/components/schemas/transactionFeeIndicator"
        scaMethods:
          $ref: "#/components/schemas/scaMethods"
        chosenScaMethod:
          $ref: "#/components/schemas/chosenScaMethod"
        challengeData:
          $ref: "#/components/schemas/challengeData"
        _links:
          $ref: "#/components/schemas/_linksPaymentInitiation"
        psuMessage:
          $ref: "#/components/schemas/psuMessageText"
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage201PaymentInitiation"


    paymentInitiationCancelResponse-202:
      description: Body of the response for a successful cancel payment request.
      type: object
      required:
        - transactionStatus
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        scaMethods:
          $ref: "#/components/schemas/scaMethods"
        chosenScaMethod:
          $ref: "#/components/schemas/chosenScaMethod"
        challengeData:
          $ref: "#/components/schemas/challengeData"
        _links:
          $ref: "#/components/schemas/_linksPaymentInitiationCancel"


    paymentInitiationWithStatusResponse: 
      description: |
        Generic JSON response body consistion of the corresponding payment initation JSON body together with an optional transaction status field.
      type: object
      required:
        - debtorAccount
        - instructedAmount
        - creditorAccount
        - creditorName
      properties:
        endToEndIdentification:
          type: string
          maxLength: 35
#        instructionIdentification: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          maxLength: 35
#        debtorName: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorName"
        debtorAccount: 
          $ref: "#/components/schemas/accountReference"
#        debtorId: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorId"
#        ultimateDebtor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateDebtor"
        instructedAmount:
          $ref: "#/components/schemas/amount"
#        transactionCurrency: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/currencyCode"
#        exchangeRateInformation: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/paymentExchangeRate"
        creditorAccount: 
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAddress:
          $ref: "#/components/schemas/address"
#        creditorId: # N.A. for all, but can be used by ASPSP if needed
#          description: Identification of Creditors, e.g. a SEPA Creditor ID.
#          type: string
#          maxLength: 35
#        creditorNameAndAddress: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/creditorNameAndAddress"
#        ultimateCreditor: # N.A.
#          $ref: "#/components/schemas/ultimateCreditor"
#        purposeCode: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/purposeCode"
#        chargeBearer: #In some payment product N.A. in some Optional in some conditional
#          $ref: "#/components/schemas/chargeBearer"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
#        remittanceInformationUnstructuredArray:
#          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
#        remittanceInformationStructured: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
#        remittanceInformationStructuredArray: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredArray"
#        requestedExecutionDate: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          format: date
#        requestedExecutionTime: # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          format: date-time
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        tppMessage:
          type: array
          items: 
            $ref: "#/components/schemas/tppMessageGeneric"
          description: Messages to the TPP on operational issues.


    periodicPaymentInitiationWithStatusResponse: 
      description: |
        Generic JSON response body consistion of the corresponding periodic payment initation JSON body together with an optional transaction status field.
      type: object
      required:
        - debtorAccount
        - instructedAmount
        - creditorAccount
        - creditorName
        - startDate
        - frequency
      properties:
        endToEndIdentification:
          type: string
          maxLength: 35
#        instructionIdentification:  # N.A. for all, but can be used by ASPSP if needed
#          type: string
#          maxLength: 35
#        debtorName: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorName"
#        debtorId: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/debtorId"
        debtorAccount: 
          $ref: "#/components/schemas/accountReference"
#        ultimateDebtor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateDebtor"
        instructedAmount:
          $ref: "#/components/schemas/amount"
        creditorAccount: 
          $ref: "#/components/schemas/accountReference"
        creditorAgent:
          $ref: "#/components/schemas/bicfi"
#        creditorId: # N.A. for all, but can be used by ASPSP if needed
#          description: Identification of Creditors, e.g. a SEPA Creditor ID.
#          type: string
#          maxLength: 35
        creditorName:
          $ref: "#/components/schemas/creditorName"
        creditorAddress:
          $ref: "#/components/schemas/address"
#        ultimateCreditor: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/ultimateCreditor"
#        purposeCode: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/purposeCode"
        remittanceInformationUnstructured:
          $ref: "#/components/schemas/remittanceInformationUnstructured"
#        remittanceInformationUnstructuredArray:
#          $ref: "#/components/schemas/remittanceInformationUnstructuredArray"
#        remittanceInformationStructured: # N.A. for all, but can be used by ASPSP if needed
#          $ref: "#/components/schemas/remittanceInformationStructuredMax140"
#        requestedExecutionDate:
#          type: string
#          format: date
#        requestedExecutionTime:
#          type: string
#          format: date-time
        #Additional Information for periodic payments
        startDate:
          $ref: "#/components/schemas/startDate"
        endDate:
          $ref: "#/components/schemas/endDate"
        executionRule:
          $ref: "#/components/schemas/executionRule"
        frequency:
          $ref: "#/components/schemas/frequencyCode"
        dayOfExecution:
          $ref: "#/components/schemas/dayOfExecution"
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        tppMessage:
          type: array
          items: 
            $ref: "#/components/schemas/tppMessageGeneric"
          description: Messages to the TPP on operational issues.


    bulkPaymentInitiationWithStatusResponse: 
      description: |
        Generic JSON response body consistion of the corresponding bulk payment initation JSON body together with an optional transaction status field.
      type: object
      required:
        - payments
        - debtorAccount
      properties:
        batchBookingPreferred:
          $ref: "#/components/schemas/batchBookingPreferred"
        requestedExecutionDate:
          type: string
          format: date
        acceptorTransactionDateTime:
          type: string
          format: date-time
        debtorAccount:
          $ref: "#/components/schemas/accountReference"
        paymentInformationId:
          type: string
          maxLength: 35
        payments:
          description: |
            A list of generic JSON bodies payment initations for bulk payments via JSON.
            
            Note: Some fields from single payments do not occcur in a bulk payment element
          type: array
          items:
            $ref: "#/components/schemas/paymentInitiationBulkElement_json"
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        tppMessage:
          type: array
          items: 
            $ref: "#/components/schemas/tppMessageGeneric"
          description: Messages to the TPP on operational issues.




    signingBasketResponse-200:
      description: |
        Body of the JSON response for a successful get signing basket request.
        
          * 'payments': payment initiations which shall be authorised through this signing basket.
          * 'consents': consent objects which shall be authorised through this signing basket.
          * 'transactionStatus': Only the codes RCVD, ACTC, RJCT are used.
          * '_links': The ASPSP might integrate hyperlinks to indicate next (authorisation) steps to be taken.
        
      type: object
      required:
        - transactionStatus
      properties:
        payments:
          $ref: "#/components/schemas/paymentIdList"
        consents:
          $ref: "#/components/schemas/consentIdList"
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus_SBS"
        _links:
          $ref: "#/components/schemas/_linksSigningBasket"


    signingBasketStatusResponse-200:
      type: object
      required:
        - transactionStatus
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus_SBS"


    signingBasketResponse-201:
      description: Body of the JSON response for a successful create signing basket request.
      type: object
      required:
        - transactionStatus
        - basketId
        - _links
      properties:
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus_SBS"
        basketId:
          $ref: "#/components/schemas/basketId"
        scaMethods:
           $ref: "#/components/schemas/scaMethods"
        chosenScaMethod:
          $ref: "#/components/schemas/chosenScaMethod"
        challengeData:
          $ref: "#/components/schemas/challengeData"
        _links:
          $ref: "#/components/schemas/_linksSigningBasket"
        psuMessage:
          $ref: "#/components/schemas/psuMessageText"
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage2XX"


    consentsResponse-201:
      description: Body of the JSON response for a successful consent request.
      type: object
      required:
        - consentStatus
        - consentId
        - _links
      properties:
        consentStatus:
          $ref: "#/components/schemas/consentStatus"
        consentId:
          $ref: "#/components/schemas/consentId"
        scaMethods:
          $ref: "#/components/schemas/scaMethods"
        chosenScaMethod:
          $ref: "#/components/schemas/chosenScaMethod"
        challengeData:
          $ref: "#/components/schemas/challengeData"
        _links:
          $ref: "#/components/schemas/_linksConsents"
        psuMessage:
          $ref: "#/components/schemas/psuMessageText"


    consentStatusResponse-200:
      description: Body of the JSON response for a successful get status request for a consent.
      type: object
      required:
        - consentStatus
      properties:
        consentStatus:
          $ref: "#/components/schemas/consentStatus"
        psuMessage: 
          $ref: "#/components/schemas/psuMessageText"

    consentInformationResponse-200_json:
      description: Body of the JSON response for a successfull get consent request.
      type: object
      required:
        - access
        - recurringIndicator
        - validUntil
        - frequencyPerDay
        - lastActionDate
        - consentStatus
      properties:
        access:
          $ref: "#/components/schemas/accountAccess"
        recurringIndicator:
          $ref: "#/components/schemas/recurringIndicator"
        validUntil:
          $ref: "#/components/schemas/validUntil"
        frequencyPerDay:
          $ref: "#/components/schemas/frequencyPerDay"
        lastActionDate:
          $ref: "#/components/schemas/lastActionDate"
        consentStatus:
          $ref: "#/components/schemas/consentStatus"
        _links: 
          $ref: "#/components/schemas/_linksGetConsent"


    readAccountBalanceResponse-200:
      description: Body of the response for a successful read balance for an account request.
      type: object
      required:
        - balances
      properties:
        account:
          $ref: "#/components/schemas/accountReference"
        balances:
          $ref: "#/components/schemas/balanceList"



    transactionsResponse-200_json:
      description: |
        Body of the JSON response for a successful read transaction list request.
        This account report contains transactions resulting from the query parameters.
      type: object
      properties:
        account:
          $ref: "#/components/schemas/accountReference"
        transactions:
          $ref: "#/components/schemas/accountReport"
        balances:
          $ref: "#/components/schemas/balanceList"
        _links:
          $ref: "#/components/schemas/_linksTransactionList"

#####################################################
# _links
#####################################################

    _linksAll:
      description: |
        A _link object with all available link types.
      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        scaRedirect:
          $ref: "#/components/schemas/hrefType"
        scaOAuth:
          $ref: "#/components/schemas/hrefType"
        confirmation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuIdentification:
          $ref: "#/components/schemas/hrefType"
        updatePsuIdentification:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithProprietaryData:
          $ref: "#/components/schemas/hrefType"
        updateProprietaryData:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        updatePsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        updateEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        updateAdditionalPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        updateAdditionalEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithAuthenticationMethodSelection:
          $ref: "#/components/schemas/hrefType"
        selectAuthenticationMethod:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithTransactionAuthorisation:
          $ref: "#/components/schemas/hrefType"
        authoriseTransaction:
          $ref: "#/components/schemas/hrefType"
        self:
          $ref: "#/components/schemas/hrefType"
        status:
          $ref: "#/components/schemas/hrefType"
        scaStatus:
          $ref: "#/components/schemas/hrefType"
        account:
          $ref: "#/components/schemas/hrefType"
        balances:
          $ref: "#/components/schemas/hrefType"
        transactions:
          $ref: "#/components/schemas/hrefType"
        transactionDetails:
          $ref: "#/components/schemas/hrefType"
        cardAccount:
          $ref: "#/components/schemas/hrefType"
        cardTransactions:
          $ref: "#/components/schemas/hrefType"
        first:
          $ref: "#/components/schemas/hrefType"
        next:
          $ref: "#/components/schemas/hrefType"
        previous:
          $ref: "#/components/schemas/hrefType"
        last:
          $ref: "#/components/schemas/hrefType"
        download:
          $ref: "#/components/schemas/hrefType"


    _linksPaymentInitiation: 
      description: |
        A list of hyperlinks to be recognised by the TPP.
        The actual hyperlinks used in the response depend on the dynamical decisions of the ASPSP when
        processing the request.
        
        **Remark:** All links can be relative or full links, to be decided by the ASPSP.
        
        Type of links admitted in this response, (further links might be added for ASPSP defined extensions):
        
        * 'scaRedirect': 
          In case of an SCA Redirect Approach, the ASPSP is transmitting the link to which to redirect the PSU browser.
        * 'scaOAuth': 
          In case of a SCA OAuth2 Approach, the ASPSP is transmitting the URI where the configuration of the Authorisation
          Server can be retrieved. The configuration follows the OAuth 2.0 Authorisation Server Metadata specification.
        * 'confirmation': 
          Might be added by the ASPSP if either the "scaRedirect" or "scaOAuth" hyperlink is returned 
          in the same response message. 
          This hyperlink defines the URL to the resource which needs to be updated with 
            * a confirmation code as retrieved after the plain redirect authentication process with the ASPSP authentication server or
            * an access token as retrieved by submitting an authorization code after the integrated OAuth based authentication process with the ASPSP authentication server. 
        * 'startAuthorisation': 
          In case, where an explicit start of the transaction authorisation is needed, but no more data needs to be updated 
          (no authentication method to be selected, no PSU identification nor PSU authentication data to be uploaded).
        * 'startAuthorisationWithPsuIdentification': 
          The link to the authorisation end-point, where the authorisation sub-resource has to be generated while 
          uploading the PSU identification data.
        * 'startAuthorisationWithPsuAuthentication': 
          The link to the authorisation end-point, where the authorisation sub-resource has to be generated while 
          uploading the PSU authentication data.
          * 'startAuthorisationWithEncryptedPsuAuthentication':
            Same as startAuthorisactionWithPsuAuthentication where the authentication data need to be encrypted on 
            application layer in uploading.
        * 'startAuthorisationWithAuthenticationMethodSelection': 
          The link to the authorisation end-point, where the authorisation sub-resource has to be generated while 
          selecting the authentication method. 
          This link is contained under exactly the same conditions as the data element "scaMethods"
        * 'startAuthorisationWithTransactionAuthorisation':
          The link to the authorisation end-point, where the authorisation sub-resource has to be generated while 
          authorising the transaction e.g. by uploading an OTP received by SMS.
        * 'self': 
          The link to the payment initiation resource created by this request.
          This link can be used to retrieve the resource data.
        * 'status': 
          The link to retrieve the transaction status of the payment initiation.
        * 'scaStatus': 
          The link to retrieve the scaStatus of the corresponding authorisation sub-resource. 
          This link is only contained, if an authorisation sub-resource has been already created.

      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        scaRedirect:
          $ref: "#/components/schemas/hrefType"
        scaOAuth:
          $ref: "#/components/schemas/hrefType"
        confirmation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuIdentification:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithAuthenticationMethodSelection:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithTransactionAuthorisation:
          $ref: "#/components/schemas/hrefType"
        self:
          $ref: "#/components/schemas/hrefType"
        status:
          $ref: "#/components/schemas/hrefType"
        scaStatus:
          $ref: "#/components/schemas/hrefType"
      example: 
        {
        "scaRedirect": {"href": "https://www.testbank.com/asdfasdfasdf"},
        "self": {"href": "/psd2/v1/payments/sepa-credit-transfers/1234-wertiq-983"}
        }

    _linksPaymentInitiationStatus: 
      description: |
        Should refer to next steps if the problem can be resolved via the interface e.g. for re-submission of credentials.
      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      example: 
        {
        "scaRedirect": {"href": "https://www.testbank.com/asdfasdfasdf"},
        "self": {"href": "/psd2/v1/payments/sepa-credit-transfers/1234-wertiq-983"}
        }


    _linksPaymentInitiationCancel:
      description: |
        A list of hyperlinks to be recognised by the TPP. The actual hyperlinks used in the response depend on the 
        dynamical decisions of the ASPSP when processing the request.
        
        Remark: All links can be relative or full links, to be decided by the ASPSP.
        
        Type of links admitted in this response, (further links might be added for ASPSP defined extensions):
        
          * 'startAuthorisation': 
            In case, where just the authorisation process of the cancellation needs to be started, 
            but no additional data needs to be updated for time being (no authentication method to be selected, 
            no PSU identification nor PSU authentication data to be uploaded).
          * 'startAuthorisationWithPsuIdentification': 
            In case where a PSU identification needs to be updated when starting the cancellation authorisation:
            The link to the cancellation-authorisations end-point, where the cancellation sub-resource has to be 
            generated while uploading the PSU identification data.
          * 'startAuthorisationWithPsuAuthentication': 
            In case of a yet to be created authorisation sub-resource: The link to the cancalation authorisation end-point, 
            where the authorisation sub-resource has to be generated while uploading the PSU authentication data.
          * 'startAuthorisationWithEncryptedPsuAuthentication':
            Same as startAuthorisactionWithPsuAuthentication where the authentication data need to be encrypted on 
            application layer in uploading.
          * 'startAuthorisationWithAuthenticationMethodSelection':
            The link to the authorisation end-point, where the cancellation-authorisation sub-resource has to be 
            generated while selecting the authentication method. This link is contained under exactly the same 
            conditions as the data element 'scaMethods'

      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        startAuthorisation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuIdentification:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithAuthenticationMethodSelection:
          $ref: "#/components/schemas/hrefType"



    _linksTransactionList:
      description: |
        A list of hyperlinks to be recognised by the TPP.

      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        account:
          $ref: "#/components/schemas/hrefType"
        first:
          $ref: "#/components/schemas/hrefType"
        last:
          $ref: "#/components/schemas/hrefType"
        previous:
          $ref: "#/components/schemas/hrefType"
        next:
          $ref: "#/components/schemas/hrefType"



    _linksConsents:
      description: |
        A list of hyperlinks to be recognised by the TPP.
        
        Type of links admitted in this response (which might be extended by single ASPSPs as indicated in its XS2A 
        documentation):
          * 'scaRedirect': 
            In case of an SCA Redirect Approach, the ASPSP is transmitting the link to which to redirect the 
            PSU browser.
          * 'scaOAuth': 
            In case of an OAuth2 based Redirect Approach, the ASPSP is transmitting the link where the configuration 
            of the OAuth2 Server is defined. 
            The configuration follows the OAuth 2.0 Authorisation Server Metadata specification. 
        * 'confirmation': 
          Might be added by the ASPSP if either the "scaRedirect" or "scaOAuth" hyperlink is returned 
          in the same response message. 
          This hyperlink defines the URL to the resource which needs to be updated with 
            * a confirmation code as retrieved after the plain redirect authentication process with the ASPSP authentication server or
            * an access token as retrieved by submitting an authorization code after the integrated OAuth based authentication process with the ASPSP authentication server.
          * 'startAuthorisation': 
            In case, where an explicit start of the transaction authorisation is needed, 
            but no more data needs to be updated (no authentication method to be selected, 
            no PSU identification nor PSU authentication data to be uploaded).
          * 'startAuthorisationWithPsuIdentification': 
            The link to the authorisation end-point, where the authorisation sub-resource has to be generated 
            while uploading the PSU identification data.
          * 'startAuthorisationWithPsuAuthentication':
            The link to the authorisation end-point, where the authorisation sub-resource has to be generated 
            while uploading the PSU authentication data.
          * 'startAuthorisationWithEncryptedPsuAuthentication':
            Same as startAuthorisactionWithPsuAuthentication where the authentication data need to be encrypted on 
            application layer in uploading.
          * 'startAuthorisationWithAuthenticationMethodSelection':
            The link to the authorisation end-point, where the authorisation sub-resource has to be generated 
            while selecting the authentication method. This link is contained under exactly the same conditions 
            as the data element 'scaMethods' 
          * 'startAuthorisationWithTransactionAuthorisation':
            The link to the authorisation end-point, where the authorisation sub-resource has to be generated 
            while authorising the transaction e.g. by uploading an OTP received by SMS.
          * 'self': 
            The link to the Establish Account Information Consent resource created by this request. 
            This link can be used to retrieve the resource data. 
          * 'status': 
            The link to retrieve the status of the account information consent.
          * 'scaStatus': The link to retrieve the scaStatus of the corresponding authorisation sub-resource. 
            This link is only contained, if an authorisation sub-resource has been already created.

      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        scaRedirect: 
          $ref: "#/components/schemas/hrefType"
        scaOAuth:
          $ref: "#/components/schemas/hrefType"
        confirmation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisation:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuIdentification:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithAuthenticationMethodSelection:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithTransactionAuthorisation: 
          $ref: "#/components/schemas/hrefType"
        self:
          $ref: "#/components/schemas/hrefType"
        status:
          $ref: "#/components/schemas/hrefType"
        scaStatus:
          $ref: "#/components/schemas/hrefType"


    _linksGetConsent:
      description: |
        A list of hyperlinks to be recognised by the TPP.
        
        Links of type "account" and/or "cardAccount", depending on the nature of the consent.

      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        account:
          $ref: "#/components/schemas/hrefType"
        card-account:
          $ref: "#/components/schemas/hrefType"


    _linksSigningBasket:
      description: |
        A list of hyperlinks to be recognised by the TPP. The actual hyperlinks used in the 
        response depend on the dynamical decisions of the ASPSP when processing the request.
        
        Remark: All links can be relative or full links, to be decided by the ASPSP.
        Type of links admitted in this response, (further links might be added for ASPSP defined 
        extensions):
        
          * 'scaRedirect': 
            In case of an SCA Redirect Approach, the ASPSP is transmitting the link to 
            which to redirect the PSU browser.
          * 'scaOAuth': 
            In case of a SCA OAuth2 Approach, the ASPSP is transmitting the URI where the configuration of 
            the Authorisation Server can be retrieved. The configuration follows the 
            OAuth 2.0 Authorisation Server Metadata specification.
          * 'startAuthorisation': 
            In case, where an explicit start of the transaction authorisation is needed, 
            but no more data needs to be updated (no authentication method to be selected, 
            no PSU identification nor PSU authentication data to be uploaded).
          * 'startAuthorisationWithPsuIdentification': 
            The link to the authorisation end-point, where the authorisation sub-resource 
            has to be generated while uploading the PSU identification data.
          * 'startAuthorisationWithPsuAuthentication':
            The link to the authorisation end-point, where the authorisation sub-resource 
            has to be generated while uploading the PSU authentication data.
          * 'startAuthorisationWithEncryptedPsuAuthentication':
            The link to the authorisation end-point, where the authorisation sub-resource has 
            to be generated while uploading the encrypted PSU authentication data.
          * 'startAuthorisationWithAuthenticationMethodSelection':
            The link to the authorisation end-point, where the authorisation sub-resource 
            has to be generated while selecting the authentication method. 
            This link is contained under exactly the same conditions as the data element 'scaMethods' 
          * 'startAuthorisationWithTransactionAuthorisation':
            The link to the authorisation end-point, where the authorisation sub-resource 
            has to be generated while authorising the transaction e.g. by uploading an 
            OTP received by SMS.
          * 'self': 
            The link to the payment initiation resource created by this request. 
            This link can be used to retrieve the resource data. 
          * 'status': 
            The link to retrieve the transaction status of the payment initiation.
          * 'scaStatus': 
            The link to retrieve the scaStatus of the corresponding authorisation sub-resource. 
            This link is only contained, if an authorisation sub-resource has been already created.
        
      type: object
      properties:
        scaRedirect: 
          $ref: "#/components/schemas/hrefType"
        scaOAuth: 
          $ref: "#/components/schemas/hrefType"
        startAuthorisation: 
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuIdentification: 
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithEncryptedPsuAuthentication:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithAuthenticationMethodSelection:
          $ref: "#/components/schemas/hrefType"
        startAuthorisationWithTransactionAuthorisation:
          $ref: "#/components/schemas/hrefType"
        self: 
          $ref: "#/components/schemas/hrefType"
        status: 
          $ref: "#/components/schemas/hrefType"
        scaStatus: 
          $ref: "#/components/schemas/hrefType"


    _linksAccountReport:
      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      required:
        - account
      properties:
        account:
          $ref: "#/components/schemas/hrefType"
        first:
          $ref: "#/components/schemas/hrefType"
        next:
          $ref: "#/components/schemas/hrefType"
        previous:
          $ref: "#/components/schemas/hrefType"
        last:
          $ref: "#/components/schemas/hrefType"


    _linksTransactionDetails:
      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      required:
        - transactionDetails
      properties:
        transactionDetails:
          $ref: "#/components/schemas/hrefType"
      
    _linksAccountDetails:
      description: |
        Links to the account, which can be directly used for retrieving account information from this dedicated account.
        
        Links to "balances" and/or "transactions"
        
        These links are only supported, when the corresponding consent has been already granted.
      type: object
      additionalProperties: 
        $ref: "#/components/schemas/hrefType"
      properties:
        balances:
          $ref: "#/components/schemas/hrefType"
        transactions:
          $ref: "#/components/schemas/hrefType"



#####################################################
# Tpp-Messages to Communicate Error Information
#####################################################


  #####################################################
  # Generic Elements
  #####################################################

    tppMessageCategory:
      description: Category of the TPP message category.
      type: string
      enum:
        - "ERROR"
        - "WARNING"


    MessageCode2XX: 
      description: Message codes for HTTP Error codes 2XX.
      type: string
      enum: 
        - "WARNING"


    MessageCode202InitiationStatus: 
      description: Message codes for HTTP codes 202 to a Payment Initiation Status Request.
      type: string
      enum: 
        - "FUNDS_NOT_AVAILABLE"


    MessageCode201PaymentInitiation:
      description: Message codes for HTTP Codes 201 to a Payment Initiation Request.
      type: string
      enum: 
        - "WARNING"
        - "BENEFICIARY_WHITELISTING_REQUIRED"

    MessageCode400_AIS: 
      description: Message codes defined for AIS for HTTP Error code 400 (BAD_REQUEST).
      type: string
      enum: 
        - "FORMAT_ERROR"              #gen
        - "PARAMETER_NOT_CONSISTENT"  #gen
        - "PARAMETER_NOT_SUPPORTED"   #gen
        - "SERVICE_INVALID"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen
        - "RESOURCE_BLOCKED"          #gen
        - "TIMESTAMP_INVALID"         #gen
        - "PERIOD_INVALID"            #gen
        - "SCA_METHOD_UNKNOWN"        #gen
        - "SCA_INVALID"               #gen
        - "CONSENT_UNKNOWN"           #gen
        - "SESSIONS_NOT_SUPPORTED"    #AIS
        
    MessageCode400_Oauth: 
      description: Message codes defined for Oauth for HTTP Error code 400 (BAD_REQUEST).
      type: string
      enum: 
        - "FORMAT_ERROR"              #gen
        - "SERVICE_INVALID"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_BLOCKED"          #gen
        - "CONSENT_UNKNOWN"           #gen

    MessageCode400_PIS: 
      description: Message codes defined for PIS for HTTP Error code 400 (BAD_REQUEST).
      type: string
      enum: 
        - "FORMAT_ERROR"              #gen
        - "PARAMETER_NOT_CONSISTENT"  #gen
        - "PARAMETER_NOT_SUPPORTED"   #gen
        - "SERVICE_INVALID"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen
        - "RESOURCE_BLOCKED"          #gen
        - "TIMESTAMP_INVALID"         #gen
        - "PERIOD_INVALID"            #gen
        - "SCA_METHOD_UNKNOWN"        #gen
        - "SCA_INVALID"               #gen
        - "CONSENT_UNKNOWN"           #gen
        - "PAYMENT_FAILED"            #PIS
        - "EXECUTION_DATE_INVALID"    #PIS

  
    MessageCode400_SBS: 
      description: Message codes defined for signing baskets for HTTP Error code 400 (BAD_REQUEST).
      type: string
      enum: 
        - "FORMAT_ERROR"              #gen
        - "PARAMETER_NOT_CONSISTENT"  #gen
        - "PARAMETER_NOT_SUPPORTED"   #gen
        - "SERVICE_INVALID"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen
        - "RESOURCE_BLOCKED"          #gen
        - "TIMESTAMP_INVALID"         #gen
        - "PERIOD_INVALID"            #gen
        - "SCA_METHOD_UNKNOWN"        #gen
        - "SCA_INVALID"               #gen
        - "CONSENT_UNKNOWN"           #gen
        - "REFERENCE_MIX_INVALID"     #SBS


    MessageCode401_PIS: 
      description: Message codes defined for PIS for HTTP Error code 401 (UNAUTHORIZED).
      type: string
      enum: 
        - "CERTIFICATE_INVALID"       #gen
        - "ROLE_INVALID"              #gen
        - "CERTIFICATE_EXPIRED"       #gen
        - "CERTIFICATE_BLOCKED"       #gen
        - "CERTIFICATE_REVOKE"        #gen
        - "CERTIFICATE_MISSING"       #gen
        - "SIGNATURE_INVALID"         #gen
        - "SIGNATURE_MISSING"         #gen
        - "CORPORATE_ID_INVALID"      #gen
        - "PSU_CREDENTIALS_INVALID"   #gen
        - "CONSENT_INVALID"           #gen, AIS
        - "CONSENT_EXPIRED"           #gen
        - "TOKEN_UNKNOWN"             #gen
        - "TOKEN_INVALID"             #gen
        - "TOKEN_EXPIRED"             #gen
        - "REQUIRED_KID_MISSING"      #PIS


    MessageCode401_AIS: 
      description: Message codes defined for AIS for HTTP Error code 401 (UNAUTHORIZED).
      type: string
      enum: 
        - "CERTIFICATE_INVALID"       #gen
        - "ROLE_INVALID"              #gen
        - "CERTIFICATE_EXPIRED"       #gen
        - "CERTIFICATE_BLOCKED"       #gen
        - "CERTIFICATE_REVOKE"        #gen
        - "CERTIFICATE_MISSING"       #gen
        - "SIGNATURE_INVALID"         #gen
        - "SIGNATURE_MISSING"         #gen
        - "CORPORATE_ID_INVALID"      #gen
        - "PSU_CREDENTIALS_INVALID"   #gen
        - "CONSENT_INVALID"           #gen, AIS
        - "CONSENT_EXPIRED"           #gen
        - "TOKEN_UNKNOWN"             #gen
        - "TOKEN_INVALID"             #gen
        - "TOKEN_EXPIRED"             #gen


    MessageCode401_PIIS: 
      description: Message codes defined for PIIS for HTTP Error code 401 (UNAUTHORIZED).
      type: string
      enum: 
        - "CERTIFICATE_INVALID"       #gen
        - "ROLE_INVALID"              #gen
        - "CERTIFICATE_EXPIRED"       #gen
        - "CERTIFICATE_BLOCKED"       #gen
        - "CERTIFICATE_REVOKE"        #gen
        - "CERTIFICATE_MISSING"       #gen
        - "SIGNATURE_INVALID"         #gen
        - "SIGNATURE_MISSING"         #gen
        - "CORPORATE_ID_INVALID"      #gen
        - "PSU_CREDENTIALS_INVALID"   #gen
        - "CONSENT_INVALID"           #gen, AIS
        - "CONSENT_EXPIRED"           #gen
        - "TOKEN_UNKNOWN"             #gen
        - "TOKEN_INVALID"             #gen
        - "TOKEN_EXPIRED"             #gen


    MessageCode401_SBS: 
      description: Message codes defined for signing baskets for HTTP Error code 401 (UNAUTHORIZED).
      type: string
      enum: 
        - "CERTIFICATE_INVALID"       #gen
        - "ROLE_INVALID"              #gen
        - "CERTIFICATE_EXPIRED"       #gen
        - "CERTIFICATE_BLOCKED"       #gen
        - "CERTIFICATE_REVOKE"        #gen
        - "CERTIFICATE_MISSING"       #gen
        - "SIGNATURE_INVALID"         #gen
        - "SIGNATURE_MISSING"         #gen
        - "CORPORATE_ID_INVALID"      #gen
        - "PSU_CREDENTIALS_INVALID"   #gen
        - "CONSENT_INVALID"           #gen, AIS
        - "CONSENT_EXPIRED"           #gen
        - "TOKEN_UNKNOWN"             #gen
        - "TOKEN_INVALID"             #gen
        - "TOKEN_EXPIRED"             #gen
        
        
    MessageCode403_PIS: 
      description: Message codes defined defined for PIS for PIS for HTTP Error code 403 (FORBIDDEN).
      type: string
      enum: 
        - "CONSENT_UNKNOWN"           #gen
        - "SERVICE_BLOCKED"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen
        - "PRODUCT_INVALID"           #PIS

    MessageCode403_AIS: 
      description: Message codes defined for AIS for HTTP Error code 403 (FORBIDDEN).
      type: string
      enum: 
        - "CONSENT_UNKNOWN"           #gen
        - "SERVICE_BLOCKED"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen


    MessageCode403_PIIS: 
      description: Message codes defined for PIIS for HTTP Error code 403 (FORBIDDEN).
      type: string
      enum: 
        - "CONSENT_UNKNOWN"           #gen
        - "SERVICE_BLOCKED"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen


    MessageCode403_SBS: 
      description: Message codes defined for signing baskets for HTTP Error code 403 (FORBIDDEN).
      type: string
      enum: 
        - "CONSENT_UNKNOWN"           #gen
        - "SERVICE_BLOCKED"           #gen
        - "RESOURCE_UNKNOWN"          #gen
        - "RESOURCE_EXPIRED"          #gen


    MessageCode404_PIS: 
      description: Message codes defined for PIS for HTTP Error code 404 (NOT FOUND).
      type: string
      enum: 
        - "RESOURCE_UNKNOWN"          #gens
        - "PRODUCT_UNKNOWN"           #PIS


    MessageCode404_AIS: 
      description: Message codes defined for AIS for HTTP Error code 404 (NOT FOUND).
      type: string
      enum: 
        - "RESOURCE_UNKNOWN"          #gens


    MessageCode404_PIIS: 
      description: Message codes defined for PIIS for HTTP Error code 404 (NOT FOUND).
      type: string
      enum: 
        - "RESOURCE_UNKNOWN"          #gens


    MessageCode404_SBS: 
      description: Message codes defined for signing baskets for HTTP Error code 404 (NOT FOUND).
      type: string
      enum: 
        - "RESOURCE_UNKNOWN"          #gens


    MessageCode405_PIS: 
      description: Message codes defined for payment cancelations PIS for HTTP Error code 405 (METHOD NOT ALLOWED).
      type: string
      enum: 
        - "SERVICE_INVALID"           #gens


    MessageCode405_PIS_CANC: 
      description: Message codes defined for payment cancelations PIS for HTTP Error code 405 (METHOD NOT ALLOWED).
      type: string
      enum: 
        - "CANCELLATION_INVALID"      #PIS
        - "SERVICE_INVALID"           #gens

    MessageCode405_AIS: 
      description: Message codes defined for AIS for HTTP Error code 405 (METHOD NOT ALLOWED).
      type: string
      enum: 
        - "SERVICE_INVALID"           #gens

    MessageCode405_PIIS: 
      description: Message codes defined for PIIS for HTTP Error code 405 (METHOD NOT ALLOWED).
      type: string
      enum: 
        - "SERVICE_INVALID"           #gens

    MessageCode405_SBS: 
      description: Message codes defined for SBS for HTTP Error code 405 (METHOD NOT ALLOWED).
      type: string
      enum: 
        - "SERVICE_INVALID"           #gens


    MessageCode406_AIS: 
      description: Message codes defined for AIS for HTTP Error code 406 (NOT ACCEPTABLE).
      type: string
      enum: 
        - "REQUESTED_FORMATS_INVALID"  #AIS

    MessageCode409_AIS: 
      description: Message codes defined for AIS for HTTP Error code 409 (CONFLICT).
      type: string
      enum: 
        - "STATUS_INVALID"            #gen

    MessageCode409_PIS: 
      description: Message codes defined for PIS for HTTP Error code 409 (CONFLICT).
      type: string
      enum: 
        - "STATUS_INVALID"            #gen

    MessageCode409_PIIS: 
      description: Message codes defined for PIIS for HTTP Error code 409 (CONFLICT).
      type: string
      enum: 
        - "STATUS_INVALID"            #gen

    MessageCode409_SBS: 
      description: Message codes defined for signing baskets for HTTP Error code 409 (CONFLICT).
      type: string
      enum: 
        - "REFERENCE_STATUS_INVALID"  #SBS
        - "STATUS_INVALID"            #gen


    MessageCode429_AIS: 
      description: Message codes for HTTP Error code 429 (TOO MANY REQUESTS).
      type: string
      enum: 
        - "ACCESS_EXCEEDED"           #AIS


  #####################################################
  # Next Gen proprietary TPP-messages
  #####################################################


    tppMessageText:
      description: Additional explaining text to the TPP.
      type: string
      maxLength: 500


    tppMessageGeneric: 
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/tppMessageCategory"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessageInitiationStatusResponse-202: 
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode202InitiationStatus"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage2XX: 
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode2XX"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage201PaymentInitiation: 
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode201PaymentInitiation"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage400_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode400_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"
    
    tppMessage400_Token:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode400_Oauth"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"
    
    tppMessage400_Authorize:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode400_Oauth"
        text:
          $ref: "#/components/schemas/tppMessageText"      


    tppMessage400_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode400_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"



    tppMessage400_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode400_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage401_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode401_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"

    tppMessage401_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode401_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage401_PIIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode401_PIIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage401_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode401_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage403_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode403_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage403_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode403_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage403_PIIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode403_PIIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage403_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode403_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage404_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode404_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage404_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode404_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage404_PIIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode404_PIIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage404_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode404_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage405_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode405_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage405_PIS_CANC:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode405_PIS_CANC"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage405_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode405_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage405_PIIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode405_PIIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage405_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode405_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage409_PIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode409_PIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage406_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode406_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"





    tppMessage409_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode409_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"



    tppMessage409_PIIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode409_PIIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage409_SBS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode409_SBS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


    tppMessage429_AIS:
      type: object
      required:
        - category
        - code
      properties:
        category:
           $ref: "#/components/schemas/tppMessageCategory"
        code:
          $ref: "#/components/schemas/MessageCode429_AIS"
        path:
          type: string
        text:
          $ref: "#/components/schemas/tppMessageText"


  #####################################################
  # RFC7807 Messages
  #####################################################

    tppErrorTitle:
      description: |
        Short human readable description of error type. 
        Could be in local language. 
        To be provided by ASPSPs.
      type: string
      maxLength: 70

    tppErrorDetail:
      description: |
        Detailed human readable text specific to this instance of the error. 
        XPath might be used to point to the issue generating the error in addition.
        Remark for Future: In future, a dedicated field might be introduced for the XPath.
      type: string
      maxLength: 500




  #####################################################
  # RFC7807 Messages
  #####################################################



    Error400_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 400 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode400_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode400_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error400_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 400 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode400_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode400_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error400_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 400 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode400_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode400_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 401 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode401_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode401_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 401 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode401_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode401_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_PIIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 401 for PIIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode401_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode401_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 401 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode401_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode401_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 403 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode403_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode403_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 403 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode403_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode403_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_PIIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 403 for PIIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode403_PIIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode403_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 403 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode403_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode403_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 404 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode404_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode404_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 404 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode404_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode404_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_PIIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 404 for PIIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode404_PIIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode404_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 404 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode404_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode404_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 405 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode405_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode405_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_PIS_CANC: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 405 for a pament cancelation (PIS).
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode405_PIS_CANC"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode405_PIS_CANC"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 405 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode405_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode405_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_PIIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 405 for PIIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode405_PIIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode405_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 405 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode405_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode405_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error406_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 406 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode406_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode406_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error409_PIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 409 for PIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode409_PIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode409_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error409_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 409 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode409_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode409_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error409_PIIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 409 for PIIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode409_PIIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode409_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error409_SBS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 409 for signing baskets.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode409_SBS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: This is a data element to support the declaration of additional errors in the context of [RFC7807]. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode409_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error429_AIS: 
      description: |
        Standardised definition of reporting error information according to [RFC7807] 
        in case of a HTTP error code 429 for AIS.
      type: object
      required:
        - type
        - code
      properties:
        type: 
          description: |
            A URI reference [RFC3986] that identifies the problem type. 
            Remark For Future: These URI will be provided by NextGenPSD2 in future.
          type: string
          format: uri
          maxLength: 70
        title:
          description: |
            Short human readable description of error type. 
            Could be in local language. 
            To be provided by ASPSPs.
          type: string
          maxLength: 70
        detail:
          description: |
            Detailed human readable text specific to this instance of the error. 
            XPath might be used to point to the issue generating the error in addition.
            Remark for Future: In future, a dedicated field might be introduced for the XPath.
          type: string
          maxLength: 500
        code:
          $ref: "#/components/schemas/MessageCode429_AIS"
        additionalErrors:
          description: |
            Array of Error Information Blocks.
            
            Might be used if more than one error is to be communicated
          type: array
          items: #ErrorInformation
            description: |
              This is a data element to support the declaration of additional errors in the context of [RFC7807] 
              in case of a HTTP error code 429 for. 
            type: object
            required:
              - code
            properties:
              title:
                $ref: "#/components/schemas/tppErrorTitle"
              detail:
                $ref: "#/components/schemas/tppErrorDetail"
              code:
                $ref: "#/components/schemas/MessageCode429_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      #example: 
        #$ref: "#/components/examples/RFC7807_ErrorInfoBody"


    Error400_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 400.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage400_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error400_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 400.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage400_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
          
    Error400_NG_Token: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 400.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage400_Token"
    
    Error400_NG_Authorize: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 400.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage400_Authorize"        

    Error400_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 400.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage400_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"



    Error401_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage401_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage401_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_NG_PIIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage401_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error401_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage401_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 403.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage403_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 403.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage403_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_NG_PIIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 403.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage403_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error403_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 403.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage403_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 404.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage404_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 404.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage404_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_NG_PIIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 404.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage404_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error404_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 404.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage404_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage405_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_NG_PIS_CANC: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage405_PIS_CANC"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage405_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_NG_PIIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage405_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error405_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 401.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage405_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"
          

    Error406_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 406.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage406_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"


    Error409_NG_PIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 409.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage409_PIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      example:
        [{
          "category": "ERROR",
          "code": "STATUS_INVALID",
          "text": "additional text information of the ASPSP up to 500 characters"
        }]


    Error409_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 409.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage409_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      example:
        [{
          "category": "ERROR",
          "code": "STATUS_INVALID",
          "text": "additional text information of the ASPSP up to 500 characters"
        }]


    Error409_NG_PIIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 409.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage409_PIIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      example:
        [{
          "category": "ERROR",
          "code": "STATUS_INVALID",
          "text": "additional text information of the ASPSP up to 500 characters"
        }]


    Error409_NG_SBS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 409.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage409_SBS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      example:
        [{
          "category": "ERROR",
          "code": "STATUS_INVALID",
          "text": "additional text information of the ASPSP up to 500 characters"
        }]


    Error429_NG_AIS: 
      description: |
        NextGenPSD2 specific definition of reporting error information in case of a HTTP error code 429.
      type: object
      properties:
        tppMessages:
          type: array
          items:
            $ref: "#/components/schemas/tppMessage429_AIS"
        _links:
          $ref: "#/components/schemas/_linksAll"
      example:
        [{
          "category": "ERROR",
          "code": "ACCESS_EXCEEDED",
          "text": "additional text information of the ASPSP up to 500 characters"
        }]
        
    401_HC_Unauthorized:
      description: |
        Unathorized access
      type: object
      properties:
        reason:
          type: string
          example: |
            unauthorized access
        


  parameters:
  #####################################################
  # Predefined Parameters
  #####################################################
  
  
  
  
  #authorize
  ##########################################################################################
  
  
  
    response_type:
      name: response_type
      in: query
      description: |
        "code" is recommended as response type
      required: true
      example: "code"
      schema:
        type: string
        
    
    client_id:
      name: client_id
      in: query
      description: |
        organizationIdentifier as provided in the eIDAS certificate. The organizationIdentifier attribute shall contain information using the following structure in the presented order:
        - "PSD" as 3 character legal person identity type reference;
        - 2 character ISO 3166 country code representing the NCA country;
        - hyphen-minus "-" and
        - 2-8 character NCA identifier (A-Z uppercase only, no separator)
        - hyphen-minus "-" and
        - PSP identifier (authorization number as specified by NCA).
      required: true
      example: "PSDSK-NBS-12345678"
      schema:
        type: string
        
    scope:
      name: scope
      in: query
      description: |
        AIS: The scope is the reference to the consent resource for account access in the form "AIS:<consentId>"
        
        PIS: The scope is the reference to the payment resource in the form "PIS:<paymentId>". 
         
        PIIS: The scope is the reference to the consent resource for granting consent to confirmation of funds in the form "PIIS:<consentId>".
      required: true
      example: "AIS:PSD2660007"
      schema:
        type: string
        
    state:
      name: state
      in: query
      description: |
        A dynamical value set by the TPP and used to prevent XSRF attacks.
      
      required: true
      example: "ed70d872-70ee-4e7f-9f73-17ed7ae13cd1"
      schema:
        type: string
      
    redirect_uri:
      name: redirect_uri
      in: query
      description: |
        The URI of the TPP where the OAuth2 server is redirecting the PSU's user agent after the authorization.
      required: true
      example: "https://client.example.com/callback"
      schema:
        type: string
        
    code_challenge:
      name: code_challenge
      in: query
      description: |
        PKCE challenge according to cryptographic RFC 7636 used to prevent code injection attacks.
      required: true
      example: "5c305578f8f19b2dcdb6c3c955c0aa709782590b4642eb890b97e43917cd0f36"
      schema:
        type: string

    code_challenge_method:
      name: code_challenge_method
      in: query
      description: |
        Code verifier transformation method, is "S256" or "plain". "S256" is recommended by this specification.
      required: false
      example: "S256"
      schema:
        type: string
        
  
  #########################################################################################

    paymentService:
      name: payment-service
      in: path
      description: |
        Payment service:
        
        Possible values are:
        * payments
        * periodic-payments
      required: true
      schema:
        type: string
        enum:
          - "payments"
          - "periodic-payments"


    paymentProduct:
      name: payment-product
      in: path
      description: |
        The addressed payment product endpoint, e.g. for SEPA Credit Transfers (SCT).
        The ASPSP will publish which of the payment products/endpoints will be supported.
        
        The following payment products are supported:
          - sepa-credit-transfers
          - instant-sepa-credit-transfers
          - target-2-payments
          - cross-border-credit-transfers
          - pain.001-sepa-credit-transfers
          - pain.001-instant-sepa-credit-transfers
          - pain.001-target-2-payments
          - pain.001-cross-border-credit-transfers
        
        **Remark:** For all SEPA Credit Transfer based endpoints which accept XML encoding, 
        the XML pain.001 schemes provided by EPC are supported by the ASPSP as a minimum for the body content. 
        Further XML schemes might be supported by some communities.
        
        **Remark:** For cross-border and TARGET-2 payments only community wide pain.001 schemes do exist. 
        There are plenty of country specificic scheme variants.


      required: true
      schema:
        type: string
        enum:
          - "sepa-credit-transfers"
          - "instant-sepa-credit-transfers"
          - "target-2-payments"
          - "cross-border-credit-transfers"
          - "pain.001-sepa-credit-transfers"
          - "pain.001-instant-sepa-credit-transfers"
          - "pain.001-target-2-payments"
          - "pain.001-cross-border-credit-transfers"


    paymentId:
      name: paymentId
      in: path
      description: Resource identification of the generated payment initiation resource.
      required: true
      schema:
        $ref: "#/components/schemas/paymentId"


    authorisationId:
      name: authorisationId
      in: path
      description: Resource identification of the related SCA.
      required: true
      schema:
        $ref: "#/components/schemas/authorisationId"


    accountId:
      name: account-id
      in: path
      description: |
        This identification is denoting the addressed (card) account. 
        The account-id is retrieved by using a "Read Account List" or "Read Card Account list" call. 
        The account-id is the "resourceId" attribute of the account structure. 
        Its value is constant at least throughout the lifecycle of a given consent.
      required: true
      schema:
        $ref: "#/components/schemas/accountId"


    transactionId:
      name: transactionId
      in: path
      description: |
        This identification is given by the attribute transactionId of the corresponding entry of a transaction list.
      required: true
      schema:
        $ref: "#/components/schemas/transactionId"


    basketId_PATH:
      name: basketId
      in: path
      description: |
        This identification of the corresponding signing basket object.
      required: true
      schema:
        $ref: "#/components/schemas/basketId"


    consentId_PATH:
      name: consentId
      in: path
      description: |
        ID of the corresponding consent object as returned by an account information consent request.
      required: true
      schema:
        $ref: "#/components/schemas/consentId"


    consentId_HEADER_optional:
      name: Consent-ID
      in: header
      description: |
        This data element may be contained, if the payment initiation transaction is part of a session, i.e. combined AIS/PIS service.
        This then contains the consentId of the related AIS consent, which was performed prior to this payment initiation.
      required: false
      schema:
        $ref: "#/components/schemas/consentId"

    Authorization:
      name: Authorization
      in: header
      description: |
        This field  might be used in case where a consent was agreed between ASPSP and PSU through an OAuth2 based protocol, 
        facilitated by the TPP.
      required: false
      schema:
        $ref: "#/components/schemas/authorization"
        
    Authorization_Required:
      name: Authorization
      in: header
      description: |
        This field  might be used in case where a consent was agreed between ASPSP and PSU through an OAuth2 based protocol, 
        facilitated by the TPP.
      required: true
      schema:
        $ref: "#/components/schemas/authorization"

    consentId_HEADER_mandatory:
      name: Consent-ID
      in: header
      description: |
        This then contains the consentId of the related AIS consent, which was performed prior to this payment initiation.
      required: true
      schema:
        $ref: "#/components/schemas/consentId"


    withBalanceQuery:
      name: withBalance
      in: query
      description: |
        If contained, this function reads the list of accessible payment accounts including the booking balance, 
        if granted by the PSU in the related consent and available by the ASPSP. 
        This parameter might be ignored by the ASPSP. 
      required: false
      schema:
        type: boolean


    dateFrom:
      name: dateFrom
      in: query
      description: |
        Conditional: Starting date (inclusive the date dateFrom) of the transaction list, mandated if no delta access is required
        and if bookingStatus does not equal "information".
        
        For booked transactions, the relevant date is the booking date. 
        
        For pending transactions, the relevant date is the entry date, which may not be transparent 
        neither in this API nor other channels of the ASPSP.
      required: false
      schema:
        type: string
        format: date


    dateTo:
      name: dateTo
      in: query
      description: |
        End date (inclusive the data dateTo) of the transaction list, default is "now" if not given. 
        
        Might be ignored if a delta function is used.
        
        For booked transactions, the relevant date is the booking date. 
        
        For pending transactions, the relevant date is the entry date, which may not be transparent 
        neither in this API nor other channels of the ASPSP.

      required: false
      schema:
        type: string
        format: date


    entryReferenceFrom:
      name: entryReferenceFrom
      in: query
      description: |
        This data attribute is indicating that the AISP is in favour to get all transactions after 
        the transaction with identification entryReferenceFrom alternatively to the above defined period. 
        This is a implementation of a delta access. 
        If this data element is contained, the entries "dateFrom" and "dateTo" might be ignored by the ASPSP 
        if a delta report is supported.
        
        Optional if supported by API provider.
      required: false
      schema:
        type: string


    bookingStatusGeneric:
      name: bookingStatus
      in: query
      description: |
        Permitted codes are 
          * "booked",
          * "pending",  
          * "both",
          * "information" and
          * "all"
        "booked" shall be supported by the ASPSP.
        To support the "pending" and "both" feature is optional for the ASPSP, 
        Error code if not supported in the online banking frontend.
        If supported, "both" means to request transaction reports of transaction of bookingStatus either "pending" or "booked".
        To support the "information" feature is optional for the ASPSP. Currently the booking status “information” only covers standing orders. Error code if not supported.
        To support the "all" feature is optional for the ASPSP, Error code if not supported. If supported, "all" means to request transaction reports of transaction of any bookingStatus ("pending", "booked" or "information").
        
      required: true
      schema:
        type: string
        enum:
          - "information"
          - "booked"
          - "pending"
          - "both"
          - "all"


    deltaList:
      name: deltaList
      in: query
      description: 
        This data attribute is indicating that the AISP is in favour to get all transactions after the last report access 
        for this PSU on the addressed account. 
        This is another implementation of a delta access-report.
        
        This delta indicator might be rejected by the ASPSP if this function is not supported.
        
        Optional if supported by API provider
      schema:
        type: boolean
    
    pageNumber:
      name: pageNumber
      in: query
      description:
        Number of transaction page that ASPSP will return. This parameter might be ignored by the ASPSP.
      schema:
        type: integer
        minimum: 0
    
    pageSize:
      name: pageSize
      in: query
      description:
        Number of transactions that ASPSP will return on one page. This parameter might be ignored by the ASPSP.
      schema:
        type: integer
        minimum: 0
        maximum: 100


    X-Request-ID:
      name: X-Request-ID
      in: header
      description: ID of the request, unique to the call, as determined by the initiating party.
      required: true
      example: "99391c7e-ad88-49ec-a2ad-99ddcb1f7721"
      schema:
        type: string
        format: uuid


    Digest:
      name: Digest
      in: header
      description: Is contained if and only if the "Signature" element is contained in the header of the request.
      schema:
        type: string
      required: false # conditional
      example: "SHA-256=hl1/Eps8BEQW58FJhDApwJXjGY4nr1ArGDHIT25vq6A="


    Signature:
      name: Signature
      in: header
      description: |
        A signature of the request by the TPP on application level. This might be mandated by ASPSP.
      schema:
        type: string
      required: false # conditional
      example: >
        keyId="SN=9FA1,CA=CN=D-TRUST%20CA%202-1%202015,O=D-Trust%20GmbH,C=DE",algorithm="rsa-sha256",
        headers="Digest X-Request-ID PSU-ID TPP-Redirect-URI Date",
        signature="Base64(RSA-SHA256(signing string))"

    TPP-Signature-Certificate:
      name: TPP-Signature-Certificate
      in: header
      description: |
        The certificate used for signing the request, in base64 encoding. 
        Must be contained if a signature is contained.
      schema:
        type: string
        format: byte
      required: false # conditional
      
    TPP-Redirect-URI:
      name: TPP-Redirect-URI
      in: header
      description: |
        URI of the TPP, where the transaction flow shall be redirected to after a Redirect.
        
        Mandated for the Redirect SCA Approach.
        It is recommended to always use this header field.
        
        **Remark for Future:** 
        This field might be changed to mandatory in the next version of the specification.
      schema:
        type: string
        format: uri
      required: false # conditional


    TPP-Nok-Redirect-URI:
      name: TPP-Nok-Redirect-URI
      in: header
      description: |
        If this URI is contained, the TPP is asking to redirect the transaction flow to this address instead of the TPP-Redirect-URI in case
        of a negative result of the redirect SCA method. This might be ignored by the ASPSP.
      schema:
        type: string
        format: uri
      required: false

    PSU-ID: 
      name: PSU-ID
      in: header
      description: |
        Client ID of the PSU in the ASPSP client interface. 
        
        Might be mandated in the ASPSP's documentation.
        
        It might be contained even if an OAuth2 based authentication was performed in a pre-step or an OAuth2 based SCA was performed in an preceding
        AIS service in the same session.
        In this case the ASPSP might check whether PSU-ID and token match, 
        according to ASPSP documentation.
      schema:
        type: string
      required: false
      example: "PSU-1234"


    PSU-ID-Type: 
      name: PSU-ID-Type
      in: header
      description: |
        Type of the PSU-ID, needed in scenarios where PSUs have several PSU-IDs as access possibility.
        
        In this case, the mean and use are then defined in the ASPSP’s documentation.
      schema:
        type: string
      required: false


    PSU-Corporate-ID: 
      name: PSU-Corporate-ID
      in: header
      description: |
        Might be mandated in the ASPSP's documentation. Only used in a corporate context.
      schema:
        type: string
      required: false


    PSU-Corporate-ID-Type: 
      name: PSU-Corporate-ID-Type
      in: header
      description: |
        Might be mandated in the ASPSP's documentation. Only used in a corporate context.
      schema:
        type: string
      required: false


    PSU-IP-Address_mandatory:
      name: PSU-IP-Address
      in: header
      description: |
        The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP.
        If not available, the TPP shall use the IP Address used by the TPP when submitting this request.
      schema:
        type: string
        format: ipv4
      required: true
      example: 192.168.8.78


    PSU-IP-Address_optional:
      name: PSU-IP-Address
      in: header
      description: |
        The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP.
      schema:
        type: string
        format: ipv4
      required: false
      example: 192.168.8.78


    PSU-IP-Address_conditionalForAis:
      name: PSU-IP-Address
      in: header
      description: |
        The forwarded IP Address header field consists of the corresponding HTTP request 
        IP Address field between PSU and TPP. 
        It shall be contained if and only if this request was actively initiated by the PSU.
      schema:
        type: string
        format: ipv4
      required: false
      example: 192.168.8.78

    PSU-IP-Port:
      name: PSU-IP-Port
      in: header
      description: |
        The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available.
      schema:
        type: string
      required: false
      example: "1234"


    PSU-Accept:
      name: PSU-Accept
      in: header
      description: |
        The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.
      schema:
        type: string
      required: false


    PSU-Accept-Charset:
      name: PSU-Accept-Charset
      in: header
      description: |
        The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.
      schema:
        type: string
      required: false


    PSU-Accept-Encoding:
      name: PSU-Accept-Encoding
      in: header
      description: |
        The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.
      schema:
        type: string
      required: false


    PSU-Accept-Language:
      name: PSU-Accept-Language
      in: header
      description: |
        The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.
      schema:
        type: string
      required: false


    PSU-User-Agent:
      name: PSU-User-Agent
      in: header
      description: |
        The forwarded Agent header field of the HTTP request between PSU and TPP, if available.
      schema:
        type: string
      required: false


    PSU-Http-Method:
      name: PSU-Http-Method
      in: header
      description: |
        HTTP method used at the PSU ? TPP interface, if available.
        Valid values are:
        * GET
        * POST
        * PUT
        * PATCH
        * DELETE
      schema:
        type: string
        enum:
          - "GET"
          - "POST"
          - "PUT"
          - "PATCH"
          - "DELETE"
      required: false


    PSU-Device-ID:
      name: PSU-Device-ID
      in: header
      description: |
        UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available.
        UUID identifies either a device or a device dependant application installation.
        In case of an installation identification this ID needs to be unaltered until removal from device.
      schema:
        type: string
        format: uuid
      required: false
      example: "99435c7e-ad88-49ec-a2ad-99ddcb1f5555"

    PSU-Geo-Location:
      name: PSU-Geo-Location
      in: header
      description: |
        The forwarded Geo Location of the corresponding http request between PSU and TPP if available.
      schema:
        type: string
        pattern: 'GEO:-?[0-9]{1,2}\.[0-9]{6};-?[0-9]{1,3}\.[0-9]{6}'
      required: false
      example: GEO:52.506931;13.144558


  requestBodies:
  #####################################################
  # Reusable Request Bodies
  #####################################################
  
    paymentInitiation:
      description: |
        JSON request body for a payment inition request message.
        
        There are the following payment-products supported:
          * "sepa-credit-transfers" with JSON-Body
          * "instant-sepa-credit-transfers" with JSON-Body
          * "target-2-payments" with JSON-Body
          * "cross-border-credit-transfers" with JSON-Body
          * "pain.001-sepa-credit-transfers" with XML pain.001.001.03 body for SCT scheme
          * "pain.001-instant-sepa-credit-transfers" with XML pain.001.001.03 body for SCT INST scheme
          * "pain.001-target-2-payments" with pain.001 body. 
            Only country specific schemes are currently available
          * "pain.001-cross-border-credit-transfers" with pain.001 body. 
            Only country specific schemes are currently available
          
        There are the following payment-services supported:
          * "payments"
          * "periodic-payments"
          * "bulk-paments"
        
        All optional, conditional and predefined but not yet used fields are defined.
      required: true
      content: 
        application/json:
          schema:
            oneOf: #Different Payment products in JSON
              - $ref: "#/components/schemas/paymentInitiation_json"
              - $ref: "#/components/schemas/periodicPaymentInitiation_json"
              - $ref: "#/components/schemas/bulkPaymentInitiation_json"
              
              
          examples:
            "Example 1: 'payments' - 'sepa-credit-transfers'":
              $ref: "#/components/examples/paymentInitiationSctBody_payments_json"
            "Example 2: 'periodic-payments' - 'sepa-credit-transfers'":
              $ref: "#/components/examples/paymentInitiationSctBody_periodic-payments_json"

        application/xml:
          schema:
            oneOf: #The same schemas are used for single and bulk payment in case of a pain.001
              - $ref: "#/components/schemas/paymentInitiationSct_pain.001"
              - $ref: "#/components/schemas/paymentInitiationSctInst_pain.001"
              - $ref: "#/components/schemas/paymentInitiationTarget2_pain.001"
              - $ref: "#/components/schemas/paymentInitiationCrossBorder_pain.001"
          examples:
            "Example 1: 'payments' - 'pain.001-sepa-credit-transfers'":
              $ref: "#/components/examples/pain.001.001_SCT_singleTransaction"
        
        multipart/form-data: #For periodic-payments with pain.001
          schema:
            $ref: "#/components/schemas/periodicPaymentInitiationMultipartBody"


    signingBasket:
      description: |
        Request body for a confirmation of an establishing signing basket request.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/signingBasket"
          examples:
            Example:
              $ref: "#/components/examples/signingBasketExample"

    oauthToken:
      description: |
        Request body for sending authorization code in exchange for access (and refresh) tokens.
      required: true
      content:
        application/x-www-form-urlencoded:
          schema:
            $ref: "#/components/schemas/oauthToken"

    confirmationOfFunds:
      description: |
        Request body for a confirmation of funds request.
      content: 
        application/json:
          schema:
            $ref: "#/components/schemas/confirmationOfFunds"
          examples:
            "Example":
              $ref: "#/components/examples/confirmationOfFundsExample"
      required: true


    consents:
      description: |
        Request body for a consents request.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/consents"
          examples:
            "Consent Request on Dedicated Accounts": 
              $ref: "#/components/examples/consentsExample_DedicatedAccounts"
            "Consent on Account List of Available Accounts":
              $ref: "#/components/examples/consentsExample_AccountList"
            "Consent Request on Account List or without Indication of dedicated Accounts":
              $ref: "#/components/examples/consentsExample_without_Accounts"

  headers:
  #####################################################
  # Reusable Response Header Elements
  #####################################################
  
  
  #####################################################
  
    LocationAuthorisation:
      description: |
        Redirect URI of the TPP
      required: true
      example: "https://tidp-t.vub.sk/esa/authorize-consent?gwCorrelationId=69b088a1-3a31-4bad-88e5-8b71d63ce9fd"
      
      schema:
        type: string

      
    
  
  
  #####################################################
  
  
  
  
  
    X-Request-ID:
      description: ID of the request, unique to the call, as determined by the initiating party.
      required: true
      example: "99391c7e-ad88-49ec-a2ad-99ddcb1f7721"
      schema:
        type: string
        format: uuid

    ASPSP-SCA-Approach:
      description: |
        This data element must be contained, if the SCA Approach is already fixed.
        Possible values are
          * EMBEDDED
          * DECOUPLED
          * REDIRECT
        The OAuth SCA approach will be subsumed by REDIRECT.
      schema:
        type: string
        enum:
          - "EMBEDDED"
          - "DECOUPLED"
          - "REDIRECT"
        example: "EMBEDDED"
      required: false

    Location:
      description: |
        Location of the created resource.
      schema:
        type: string
        format: url
      required: false
      
      
    #conditional for extended service multiple Consent
    ASPSP-Multiple-Consent-Support:
      description: |
        true if the ASPSP supports the Multiple Consent Service.
    
        false if the ASPSP does not support the Multiple Consent Service.
    
        If not provided, this also implies that the ASPSP does not support the Multiple Consent Service.
      schema:
        type: boolean       
      required: false


    #conditional for extended service lean push
    ASPSP-Notification-Support:
      description: |
        true if the ASPSP supports resource status notification services.
    
        false if the ASPSP supports resource status notification in general, but not for the current request.
    
        Not used, if resource status notification services are generally not supported by the ASPSP.
    
        Shall be supported if the ASPSP supports resource status notification services.
      schema:
        type: boolean       
      required: false
    
    ASPSP-Notification-Content:
      description: |
        The string has the form
        status=X1, …, Xn
        where Xi is one of the constants SCA, PROCESS, LAST and where constants are not repeated.
        The usage of the constants supports the following semantics
        SCA - Notification on every change of the scaStatus attribute for all related authorisation processes is provided by the ASPSP for the related resource.
        PROCESS - Notification on all changes of consentStatus or transactionStatus attributes is provided by the ASPSP for the related resource
        LAST - Notification on the last consentStatus or transactionStatus as available in the XS2A interface is provided by the ASPSP for the related resource.
        This field must be provided if the ASPSP-Notification-Support=true. The ASPSP might consider the notification content as preferred by the TPP, but can also respond independently of the preferred request    
      schema:
        type: string        
      required: false
  responses:
  #####################################################
  # Reusabale Responses
  #####################################################
    #####################################################
    # Positive Responses
    #####################################################
    
    #############################################################################
    
    OK_302_Authorisation_Found:
      description: |
        OK 
      headers:
        Location:
          $ref: "#/components/headers/LocationAuthorisation"
      
    OK_200_Token_Required:
     description: OK
     content:
      application/json:
        examples:
          "Access and refresh tokens for AIS scope":
            $ref: "#/components/examples/tokenAISResponseBodyExample"
          "Access token for PIS scope":
            $ref: "#/components/examples/tokenPISResponseBodyExample"
          
    

    
    #############################################################################
    
    

    OK_200_PaymentInitiationInformation: 
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      content:
        application/json:
           schema:
            oneOf:  #Different Payment Products with status
              - $ref: "#/components/schemas/paymentInitiationWithStatusResponse"
              - $ref: "#/components/schemas/periodicPaymentInitiationWithStatusResponse"
              - $ref: "#/components/schemas/bulkPaymentInitiationWithStatusResponse"
              
        application/xml:
          schema:
            oneOf: #The same schemas are used for single and bulk payment in case of a pain.001
              - $ref: "#/components/schemas/paymentInitiationSct_pain.001"
              - $ref: "#/components/schemas/paymentInitiationSctInst_pain.001"
              - $ref: "#/components/schemas/paymentInitiationTarget2_pain.001"
              - $ref: "#/components/schemas/paymentInitiationCrossBorder_pain.001"
          examples:
            "Example 1: 'payments' - 'pain.001-sepa-credit-transfers'":
              $ref: "#/components/examples/pain.001.001_SCT_singleTransaction"
        
        multipart/form-data: #For periodic-payments with pain.001
          schema:
            $ref: "#/components/schemas/periodicPaymentInitiationMultipartBody"


    OK_200_PaymentInitiationStatus:
      description: OK
      
      headers: 
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/paymentInitiationStatusResponse-200_json"
          examples:
            simple:
              $ref: "#/components/examples/paymentInitiationStatusResponse_json_Simple"
            extended:
              $ref: "#/components/examples/paymentInitiationStatusResponse_json_Extended"
        
        application/xml:
          schema:
            $ref: "#/components/schemas/paymentInitiationStatusResponse-200_xml"
          examples: 
            "Payment Initiation Status Response Body XML for SCT":
              $ref: "#/components/examples/pain.002.001_SCT_singleTransaction"


    OK_202_PaymentInitiationStatus:
      description: OK
      
      headers: 
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/paymentInitiationStatusResponse-202_json"
          examples:
            simple:
              $ref: "#/components/examples/paymentInitiationStatusResponse_json_Simple"
            extended:
              $ref: "#/components/examples/paymentInitiationStatusResponse_json_Extended"
        
        application/xml:
          schema:
            $ref: "#/components/schemas/paymentInitiationStatusResponse-200_xml"
          examples: 
            "Payment Initiation Status Response Body XML for SCT":
              $ref: "#/components/examples/pain.002.001_SCT_singleTransaction"


   

    OK_200_AccountList:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/accountList"
          examples:
            "Example 1":
              $ref: "#/components/examples/accountListExample1"
            "Example 2":
              $ref: "#/components/examples/accountListExample2"
            "Example 3":
              $ref: "#/components/examples/accountListExample3"




    OK_200_AccountDetails:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            type: object
            required:
              - account
            properties:
              account:
                $ref: "#/components/schemas/accountDetails"
          examples:
            "Regular Account": 
              $ref: "#/components/examples/accountDetailsRegularAccount"
            "Multicurrency Account":
              $ref: "#/components/examples/accountDetailsMulticurrencyAccount"




    OK_200_TransactionDetails:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            type: object
            required: 
              - transactionsDetails
            properties:
              transactionsDetails:
                $ref: "#/components/schemas/transactionDetailsBody"
          examples:
            Example:
              $ref: "#/components/examples/transactionDetailsExample"


    OK_200_Balances:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/readAccountBalanceResponse-200"
          examples:
            "Example 1: Regular Account":
              $ref: "#/components/examples/balancesExample1_RegularAccount"
            "Example 2: Multicurrency Account":
              $ref: "#/components/examples/balancesExample2_MulticurrencyAcount"


    OK_200_AccountsTransactions:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/transactionsResponse-200_json"
          examples:
            "Example":
              $ref: "#/components/examples/transactionsExample1_RegularAccount_json"  
          
    OK_200_ConsentInformation:
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/consentInformationResponse-200_json"
          examples:
            Example:
              $ref: "#/components/examples/consentsInformationResponseExample"


    OK_200_ConsentStatus: 
      description: OK
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/consentStatusResponse-200"
          examples:
            Example:
              $ref: "#/components/examples/consentStatusResponseExample1"
    


    OK_200_GetSigningBasket:
      description: OK

      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/signingBasketResponse-200"
          examples:
            Example:
              $ref: "#/components/examples/getSigningBasketResponseExample1"

    OK_200_SigningBasketStatus:
      description: OK

      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/signingBasketStatusResponse-200"

    OK_200_ConfirmationOfFunds:
      description: OK
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            description: |
              Equals "true" if sufficient funds are available at the time of the request, 
              "false" otherwise.
            type: object
            required: 
              - fundsAvailable
            properties:
              fundsAvailable:
                $ref: "#/components/schemas/fundsAvailable"
          examples:
            "Example":
              $ref: "#/components/examples/confirmationOfFundsResponseExample"


    CREATED_201_SigningBasket:
      description: Created

      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
        ASPSP-SCA-Approach:
          $ref: "#/components/headers/ASPSP-SCA-Approach"
        #conditional for extended service lean Push
        ASPSP-Notification-Support:
          $ref: "#/components/headers/ASPSP-Notification-Support"
        ASPSP-Notification-Content:
          $ref: "#/components/headers/ASPSP-Notification-Content"
          
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/signingBasketResponse-201"
          examples:
            "Response (always with explicit authorization start)":
              $ref: "#/components/examples/createSigningBasketResponseExample1"


    CREATED_201_PaymentInitiation:
      description: CREATED
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
        Location:
          $ref: "#/components/headers/Location"
        ASPSP-SCA-Approach:
          $ref: "#/components/headers/ASPSP-SCA-Approach"
        #conditional for extended service lean Push
        ASPSP-Notification-Support:
          $ref: "#/components/headers/ASPSP-Notification-Support"
        ASPSP-Notification-Content:
          $ref: "#/components/headers/ASPSP-Notification-Content"

      content:
        application/json:
          schema:
            $ref: "#/components/schemas/paymentInitationRequestResponse-201"
          examples:
            "Response in case of a redirect with an implicitly created authorisation sub-resource":
              $ref: "#/components/examples/paymentInitiationExample_json_Redirect"
            "Response in case of a redirect where an explicit authorisation start is needed":
              $ref: "#/components/examples/paymentInitiationExample_json__RedirectExplicitAuthorisation"
            "Response in case of an OAuth2 SCA approach approach with implicitly creating an authorisation sub-resource":
              $ref: "#/components/examples/paymentInitiationExample_json_OAuth2"
            "Response in case of the decoupled approach with explicit start of authorisation needed (will be done with the update PSU identification function)":
              $ref: "#/components/examples/paymentInitiationExample_json_Decoupled"
            "Response in case of the embedded approach with explicit start of authorisation":
              $ref: "#/components/examples/paymentInitiationExample_json_Embedded"
    


    CREATED_201_Consents:
      description: Created
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
        ASPSP-SCA-Approach:
          $ref: "#/components/headers/ASPSP-SCA-Approach"
        #conditional for Multiple Consents
        #ASPSP-Multiple-Consent-Support:
        #  $ref: "#/components/headers/ASPSP-Multiple-Consent-Support"
        #conditional for extended service lean Push
        ASPSP-Notification-Support:
          $ref: "#/components/headers/ASPSP-Notification-Support"
        ASPSP-Notification-Content:
          $ref: "#/components/headers/ASPSP-Notification-Content"

      content:
        application/json:
          schema:
            $ref: "#/components/schemas/consentsResponse-201"
          
          examples: 
            "Response in case of a redirect":
              $ref: "#/components/examples/consentResponseExample1a_Redirect"
            "Response in case of a redirect with a dedicated start of the authorisation process":
              $ref: "#/components/examples/consentResponseExample1b_Redirect"
            "Response in case of the OAuth2 approach with an implicit generated authorisation resource": 
              $ref: "#/components/examples/consentResponseExample2_OAuth2"
            "Response in case of the decoupled approach": 
              $ref: "#/components/examples/consentResponseExample3_Decoupled"
            "Response in case of the embedded approach": 
              $ref: "#/components/examples/consentResponseExample4_Embedded"


    RECEIVED_202_PaymentInitiationCancel:
      description: Received
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/paymentInitiationCancelResponse-202"
          examples:
            Example:
              $ref: "#/components/examples/paymentInitiationCancelResponse-202"


    NO_CONTENT_204_PaymentInitiationCancel:
      description:  No Content
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #NO RESPONSE BODY


    NO_CONTENT_204_Consents:
      description: No Content
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #NO RESPONSE BODY


    NO_CONTENT_204_SigningBasket:
      description: No Content
      
      headers:
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #NO RESPONSE BODY

    #####################################################
    # Negative Responses
    #####################################################
    
    #####################################################
    
    BAD_REQUEST_400_Token_Request:
      description: Bad request
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_Token"
            
    
    BAD_REQUEST_400_Authorisation_Request:
      
      description: Bad Request
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_Authorize"
 
    
    #####################################################
    
    

    BAD_REQUEST_400_AIS:
      description: Bad Request
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_AIS" 

        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error400_AIS" 


    BAD_REQUEST_400_PIS:
      description: Bad Request
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_PIS" 

        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error400_PIS" 


    BAD_REQUEST_400_PIIS:
      description: Bad Request
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_AIS" 

        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error400_AIS" 


    BAD_REQUEST_400_SBS:
      description: Bad Request
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error400_NG_SBS" 

        application/problem+json:
          schema:
            $ref: "#/components/schemas/Error400_SBS" 


    UNAUTHORIZED_401_PIS:
      description: Unauthorized
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error401_NG_PIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error401_PIS" 

    UNAUTHORIZED_401_AIS:
      description: Unauthorized
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error401_NG_AIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error401_AIS" 

    UNAUTHORIZED_401_PIIS:
      description: Unauthorized
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error401_NG_PIIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error401_PIIS" 

    UNAUTHORIZED_401_SBS:
      description: Unauthorized
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error401_NG_SBS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error401_SBS" 
            

    FORBIDDEN_403_PIS:
      description: Forbidden
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error403_NG_PIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error403_PIS" 


    FORBIDDEN_403_AIS:
      description: Forbidden
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error403_NG_AIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error403_AIS" 


    FORBIDDEN_403_PIIS:
      description: Forbidden
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error403_NG_PIIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error403_PIIS" 


    FORBIDDEN_403_SBS:
      description: Forbidden
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error403_NG_SBS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error403_SBS" 


    NOT_FOUND_404_PIS:
      description: Not found
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error404_NG_PIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error404_PIS" 


    NOT_FOUND_404_AIS:
      description: Not found
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error404_NG_AIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error404_AIS" 


    NOT_FOUND_404_PIIS:
      description: Not found
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error404_NG_PIIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error404_PIIS" 


    NOT_FOUND_404_SBS:
      description: Not found
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error404_NG_SBS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error404_SBS" 


    METHOD_NOT_ALLOWED_405_PIS:
      description: Method Not Allowed
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error405_NG_PIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error405_PIS" 


    METHOD_NOT_ALLOWED_405_PIS_CANC:
      description: Method Not Allowed
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error405_NG_PIS_CANC" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error405_PIS_CANC" 


    METHOD_NOT_ALLOWED_405_AIS:
      description: Method Not Allowed
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error405_NG_AIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error405_AIS" 


    METHOD_NOT_ALLOWED_405_PIIS:
      description: Method Not Allowed
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error405_NG_PIIS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error405_PIIS" 


    METHOD_NOT_ALLOWED_405_SBS:
      description: Method Not Allowed
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error405_NG_SBS" 

        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error405_SBS" 


    NOT_ACCEPTABLE_406_PIS:
      description: Not Acceptable
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIS in case of HTTP code 406



    NOT_ACCEPTABLE_406_AIS:
      description: Not Acceptable
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error406_NG_AIS" 
        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error406_AIS" 


    NOT_ACCEPTABLE_406_PIIS:
      description: Not Acceptable
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 406


    NOT_ACCEPTABLE_406_SBS:
      description: Not Acceptable
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for signing in case of HTTP code 406


    REQUEST_TIMEOUT_408_PIS: 
      description: Request Timeout
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIS in case of HTTP code 408


    REQUEST_TIMEOUT_408_AIS: 
      description: Request Timeout
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for AIS in case of HTTP code 408


    REQUEST_TIMEOUT_408_PIIS: 
      description: Request Timeout
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 408


    REQUEST_TIMEOUT_408_SBS: 
      description: Request Timeout
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for signing baskets in case of HTTP code 408 


    CONFLICT_409_PIS: 
      description: Conflict
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      content:
        application/json:
          schema:
             $ref: "#/components/schemas/Error409_NG_PIS"
          
        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error409_PIS"


    CONFLICT_409_AIS: 
      description: Conflict
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      content:
        application/json:
          schema:
             $ref: "#/components/schemas/Error409_NG_AIS"
          
        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error409_AIS"


    CONFLICT_409_PIIS: 
      description: Conflict
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      content:
        application/json:
          schema:
             $ref: "#/components/schemas/Error409_NG_PIIS"
          
        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error409_PIIS"


    CONFLICT_409_SBS: 
      description: Conflict
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      content:
        application/json:
          schema:
             $ref: "#/components/schemas/Error409_NG_SBS"
          
        application/problem+json:
          schema:
             $ref: "#/components/schemas/Error409_SBS"


    UNSUPPORTED_MEDIA_TYPE_415_AIS:
      description: Unsupported Media Type
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for AIS in case of HTTP code 415 


    UNSUPPORTED_MEDIA_TYPE_415_PIS:
      description: Unsupported Media Type
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for AIS in case of HTTP code 415 


    UNSUPPORTED_MEDIA_TYPE_415_PIIS:
      description: Unsupported Media Type
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 415 


    UNSUPPORTED_MEDIA_TYPE_415_SBS:
      description: Unsupported Media Type
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for signing baskets in case of HTTP code 415 


    TOO_MANY_REQUESTS_429_PIS:
      description: Too Many Requests
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      #No Response body because there are no valid message codes for PIS in case of HTTP code 429 


    TOO_MANY_REQUESTS_429_AIS:
      description: Too Many Requests
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error429_NG_AIS" 
        application/problem+json:

          schema:
             $ref: "#/components/schemas/Error429_AIS" 


    TOO_MANY_REQUESTS_429_PIIS:
      description: Too Many Requests
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 429 


    TOO_MANY_REQUESTS_429_SBS:
      description: Too Many Requests
      
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      
      #No Response body because there are no valid message codes for signing baskets in case of HTTP code 429 


    INTERNAL_SERVER_ERROR_500_PIS:
      description: Internal Server Error
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIS in case of HTTP code 500 


    INTERNAL_SERVER_ERROR_500_AIS:
      description: Internal Server Error
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for AIS in case of HTTP code 500 


    INTERNAL_SERVER_ERROR_500_PIIS:
      description: Internal Server Error
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 500 


    INTERNAL_SERVER_ERROR_500_SBS:
      description: Internal Server Error
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for signing baskets in case of HTTP code 500 


    SERVICE_UNAVAILABLE_503_PIS:
      description: Service Unavailable
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIS in case of HTTP code 503


    SERVICE_UNAVAILABLE_503_AIS:
      description: Service Unavailable
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for AIS in case of HTTP code 503


    SERVICE_UNAVAILABLE_503_PIIS:
      description: Service Unavailable
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for PIIS in case of HTTP code 503


    SERVICE_UNAVAILABLE_503_SBS:
      description: Service Unavailable
      headers:
        Location:
          $ref: "#/components/headers/Location"
        X-Request-ID:
          $ref: "#/components/headers/X-Request-ID"
      #No Response body because there are no valid message codes for signing baskets in case of HTTP code 503
      
    
      #####################################################
      # Health check
      #####################################################
      
    OK_200_Health_Check:
      description: |
        All services available
      
    BAD_REQUEST_401_Unauthorized:
      description: |
        Unathorized access
      content:
        application/json:
          schema:
             $ref: "#/components/schemas/401_HC_Unauthorized"
    SERVICE_UNAVAILABLE_500_HC:
      description: |
        Service unavailable
  
        
        
    
        
      
      

  examples:
  #####################################################
  # Predefined Examples
  #####################################################
  
  #####################################################
  
  
    tokenAISResponseBodyExample:
      value:
        {
         "access_token" : "cfabe13f-ae7e-4836-b087-4d854ca1c8f8",
         "token_type" : "Bearer",
         "expires_in" : 3600,
         "refresh_token" : "c7943793-80d2-409f-8ba8-388a3d333ad2",
         "scope" : "AIS:PSD2660007"
        }
    
    tokenPISResponseBodyExample:
      value:
        {
         "access_token" : "cfabe13f-ae7e-4836-b087-4d854ca1c8f8",
         "token_type" : "Bearer",
         "expires_in" : 3600,
         "scope" : "PIS:707ae7d1035148c482e581a62314a755"
        }
  
  
  
  #####################################################

    ibanExampleDe_01:
      value: "DE02100100109307118603"


    ibanExampleDe_02:
      value: "DE23100120020123456789"


    ibanExampleDe_03:
      value: "DE40100100103307118608"


    ibanExampleDe_04:
      value: "DE67100100101306118605"


    ibanExampleDe_05:
      value: "DE87200500001234567890"


    ibanExampleFr_01:
      value: "FR7612345987650123456789014"


    ibanExampleNl_01:
      value: "NL76RABO0359400371"


    ibanExampleSe_01:
      value: "SE9412309876543211234567"


    maskedPanExample:
      value: "123456xxxxxx1234"


    uuidExample:
      value: "99391c7e-ad88-49ec-a2ad-99ddcb1f7721"


    pain.001.001_SCT_singleTransaction:
      description: A pain.001.001.03 message in case of SCT
      value: >
        <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
          <CstmrCdtTrfInitn>
            <GrpHdr>
              <MsgId>MIPI-123456789RI-123456789</MsgId>
              <CreDtTm>2017-02-14T20:23:34.000Z</CreDtTm>
              <NbOfTxs>1</NbOfTxs>
              <CtrlSum>123</CtrlSum>
              <InitgPty>
                <Nm>PaymentInitiator</Nm>
                <Id><OrgId><Othr><Id>DE10000000012</Id>
                  <SchmeNm><Prptry>PISP</Prptry></SchmeNm></Othr></OrgId></Id>
              </InitgPty>
            </GrpHdr> 
            <PmtInf> 
              <PmtInfId>BIPI-123456789RI-123456789</PmtInfId>
              <PmtMtd>TRF</PmtMtd> 
              <NbOfTxs>1</NbOfTxs>
              <CtrlSum>123</CtrlSum>
              <PmtTpInf><SvcLvl><Cd>SEPA</Cd></SvcLvl></PmtTpInf>
              <ReqdExctnDt>2017-02-15</ReqdExctnDt>
              <Dbtr><Nm>PSU Name</Nm></Dbtr>
              <DbtrAcct><Id><IBAN>DE87200500001234567890</IBAN></Id></DbtrAcct>
              <ChrgBr>SLEV</ChrgBr>
              <CdtTrfTxInf>
                <PmtId><EndToEndId>RI-123456789</EndToEndId></PmtId> 
                <Amt><InstdAmt Ccy="EUR">123</InstdAmt></Amt>
                <Cdtr><Nm>Merchant123</Nm></Cdtr>
                <CdtrAcct><Id><IBAN> DE23100120020123456789</IBAN></Id></CdtrAcct>
                <RmtInf><Ustrd>Ref Number Merchant-123456</Ustrd></RmtInf>
              </CdtTrfTxInf>
            </PmtInf>
          </CstmrCdtTrfInitn>
        </Document>


    pain.002.001_SCT_singleTransaction:
      description: A pain.002.001.03 message in case of SCT
      value: >
        <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.002.001.03">
          <CstmrPmtStsRpt>
            <GrpHdr>
              <MsgId>4572457256725689726906</MsgId>
              <CreDtTm>2017-02-14T20:24:56.021Z</CreDtTm>
              <DbtrAgt><FinInstnId><BIC>ABCDDEFF</BIC></FinInstnId></DbtrAgt>
              <CdtrAgt><FinInstnId><BIC>DCBADEFF</BIC></FinInstnId></CdtrAgt>
            </GrpHdr>
            <OrgnlGrpInfAndSts>
              <OrgnlMsgId>MIPI-123456789RI-123456789</OrgnlMsgId>
              <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
              <OrgnlCreDtTm>2017-02-14T20:23:34.000Z</OrgnlCreDtTm>
              <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
              <OrgnlCtrlSum>123</OrgnlCtrlSum>
              <GrpSts>ACCT</GrpSts>
            </OrgnlGrpInfAndSts>
            <OrgnlPmtInfAndSts>
              <OrgnlPmtInfId>BIPI-123456789RI-123456789</OrgnlPmtInfId>
              <OrgnlNbOfTxs>1</OrgnlNbOfTxs>
              <OrgnlCtrlSum>123</OrgnlCtrlSum>
              <PmtInfSts>ACCT</PmtInfSts>
            </OrgnlPmtInfAndSts>
          </CstmrPmtStsRpt>
        </Document>


    paymentInitiationSctBody_payments_json:
      value:
        {    
          "instructedAmount": {"currency": "EUR", "amount": "123.50"},
          "debtorAccount": {"iban": "DE40100100103307118608"},
          "creditorName": "Merchant123",
          "creditorAccount": {"iban": "DE02100100109307118603"},
          "remittanceInformationUnstructured": "Ref Number Merchant"
        }


    paymentInitiationSctBody_periodic-payments_json:
      value:
        {
        "instructedAmount": {"currency": "EUR", "amount": "123"},
        "debtorAccount": {"iban": "DE40100100103307118608"},
        "creditorName": "Merchant123",
        "creditorAccount": {"iban": "DE23100120020123456789"},
        "remittanceInformationUnstructured": "Ref Number Abonnement",
        "startDate": "2018-03-01",
        "executionRule": "preceding",
        "frequency": "Monthly",
        "dayOfExecution": "01"
        }
        

    accountDetailsRegularAccount:
      description: Account details for a regular Account.
      value:
        {
          "account":
            {
              "resourceId": "SK5302000000190056908253",
              "iban": "SK5302000000190056908253", 
              "currency": "EUR",
              "ownerName": "Heike Mustermann",
              "product": "VÚB konto",
              "cashAccountType": "CACC",
              "displayName": "Main Account",
              "_links": 
                {
                  "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/balances"},
                  "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/transactions"}
                 }
            }
        }


    accountDetailsMulticurrencyAccount:
      description: Account details for a multicurrency account.
      value:
        {
          "account":
            {
              "resourceId": "SK5302000000190056908253",
              "iban": "SK5302000000190056908253", 
              "currency": "USD",
              "ownerName": "Heike Mustermann",
              "product": "Multicurrency Account",
              "cashAccountType": "CACC",
              "displayName": "Aggregation Account",
              "_links": 
                {
                  "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/balances"},
                  "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/transactions"}
                }
            }
        }


    accountListExample1:
      summary: Account list Example 1
      description: Response in case of an example, where the consent has been given on two different IBANs.
      value:
        {"accounts":
           [
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e80f",
               "iban": "DE2310010010123456789", 
               "currency": "EUR",
               "product": "Girokonto",
               "cashAccountType": "CACC",
               "name": "Main Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/balances"},
            "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/transactions"}}
              },
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e81e",
               "iban": "DE2310010010123456788",
               "currency": "USD",
               "product": "Fremdwährungskonto",
               "cashAccountType": "CACC",
               "name": "US Dollar Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e81e/balances" }}
               } 
        ]}


    accountListExample2:
      summary: Account list Example 2
      description: |
        Response in case of an example where consent on transactions and balances has been given to a multicurrency account which has two sub-accounts with currencies EUR and USD, and where the ASPSP is giving the data access only on sub-account level.
      value:
        {"accounts":
           [
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e80f",
               "iban": "DE2310010010123456788", 
               "currency": "EUR",
               "product": "Girokonto",
               "cashAccountType": "CACC",
               "name": "Main Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/balances"},
            "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80f/transactions"}}
              },
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e81e",
               "iban": "DE2310010010123456788",
               "currency": "USD",
               "product": "Fremdwährungskonto",
               "cashAccountType": "CACC",
               "name": "US Dollar Account",
               "_links": {
                 "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e81e/balances"},
                 "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e81e/transactions"} }
               } 
        ]}


    accountListExample3:
      summary: Account list Example 3
      description: |
        Account list response in case of an example where consent on balances and transactions has been given to 
        a multicurrency account which has two sub-accounts with currencies EUR and USD and where the ASPSP is giving 
        the data access on aggregation level and on sub-account level.
      value:
        {"accounts":
           [
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e80f",
               "iban": "DE2310010010123456788", 
               "currency": "XXX",
               "product": "Multi currency account",
               "cashAccountType": "CACC",
               "name": "Aggregation Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e333/balances"},
            "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e333/transactions"}}
              },
        {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e80e",
               "iban": "DE2310010010123456788", 
               "currency": "EUR",
               "product": "Girokonto",
               "cashAccountType": "CACC",
               "name": "Main Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80e/balances"},
            "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e80e/transactions"}}
              },
              {"resourceId": "3dc3d5b3-7023-4848-9853-f5400a64e81d",
               "iban": "DE2310010010123456788",
               "currency": "USD",
               "product": "Fremdwährungskonto",
               "cashAccountType": "CACC",
               "name": "US Dollar Account",
               "_links": {
            "balances": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e81d/balances"},
            "transactions": {"href": "/psd2/v1/accounts/3dc3d5b3-7023-4848-9853-f5400a64e81d/transactions"} }
               } 
        ]}

    signingBasketExample:
      description: "JSON Body of a signing basket request"
      value:
        {    
           "paymentIds": ["123qwert456789", "12345qwert7899"]
        }


    createSigningBasketResponseExample1:
      description: 
        Response (always with explicit authorisation start).
      value:
        {
          "transactionStatus": "RCVD",
          "basketId": "1234-basket-567",
          "_links": 
                {
                "self": {"href": "/psd2/v1/signing-baskets/1234-basket-567"},
                "status": {"href": "/psd2/v1/signing-baskets/1234-basket-567/status"},
                "startAuthorisation": {"href": "/psd2/v1/signing-baskets/1234-basket-567/authorisations"}
                }
        }


    getSigningBasketResponseExample1:
      value:
        {   
          "payments": ["1234pay567","1234pay568","1234pay888"],
          "transactionStatus": "ACTC"
        }


    consentsExample_DedicatedAccounts:
      description: Consent request on dedicated accounts.
      value:
        {
        "access": 
          {
            "balances": [
                { "iban": "DE40100100103307118608" },
                { "iban": "DE02100100109307118603",
          "currency": "EUR"
                },
                { "iban": "DE67100100101306118605" }
              ],
            "transactions": [
                { "iban": "DE40100100103307118608" }
              ]
           },
        "recurringIndicator": "true",
        "validUntil": "2035-11-01",
        "frequencyPerDay": 4
       }
      


    consentsExample_AccountList:
      description: Consent on account list of available accounts.
      value:
        {"access": 
          {"availableAccounts": "allAccounts"},
         "recurringIndicator": "false",
         "validUntil": "2035-08-06",
         "frequencyPerDay": 1
        }


    consentsExample_without_Accounts:
      description: Consent request on account list or without indication of accounts.
      value:
        {"access": {},
        "recurringIndicator": "true",
        "validUntil": "2035-11-01",
        "frequencyPerDay": 4
        }

    consentsInformationResponseExample:
      description: Consent request on account list or without indication of accounts.
      value:
        {
          "access": {
            "balances": [
              {"iban": "DE2310010010123456789"}
                ], 
            "transactions": 
              [
              {"iban": "DE2310010010123456789"}
              ]
            },
          "recurringIndicator": "true",
          "validUntil": "2035-11-01",
          "frequencyPerDay": 4,
          "consentStatus": "valid",
          "_links": {"account": {"href": "/psd2/v1/accounts"}}
        }


    consentResponseExample1a_Redirect:
      description: Consent request response in case of a redirect.
      value: 
        { 
          "consentStatus": "received",
          "consentId": "1234-wertiq-983",
          "_links": 
            {
            "scaRedirect": {"href": "https://www.testbank.com/authentication/1234-wertiq-983"},
            "status": {"href": "/psd2/v1/consents/1234-wertiq-983/status"},
            "scaStatus": {"href": "/psd2/v1/consents/1234-wertiq-983/authorisations/123auth567"}
            }
        }


    consentResponseExample1b_Redirect:
      description: Consent request response in case of a redirect with a dedicated start of the authorisation process.
      value: 
        { 
          "consentStatus": "received",
          "consentId": "1234-wertiq-983",
          "_links": 
            {
            "startAuthorisation": {"href": "/psd2/v1/consents/1234-wertiq-983/authorisations"}
            }
        }


    consentResponseExample2_OAuth2:
      description: Response in case of the OAuth2 approach with an implicit generated authorisation resource.
      value: 
        { 
        "consentStatus": "received",
        "consentId": "1234-wertiq-983",
        "_links": 
          {
            "self": {"href": "/psd2/v1/consents/1234-wertiq-983"},
            "scaStatus": {"href": "/psd2/v1/consents/1234-wertiq-983/authorisations/123auth567"},
            "scaOAuth": {"href": "https://www.testbank.com/oauth/.well-known/oauth-authorization-server"}
          }
        } 


    consentResponseExample3_Decoupled:
      description: Response in case of the decoupled approach.
      value: 
        { 
          "consentStatus": "received",
          "consentId": "1234-wertiq-983",
          "_links": 
            {
            "startAuthorisationWithPsuIdentification": {"href": "/psd2/v1/consents/1234-wertiq-983/authorisations"}
            }
        } 


    consentResponseExample4_Embedded:
      description: Response in case of the embedded approach.
      value: 
        { 
          "consentStatus": "received",
          "consentId": "1234-wertiq-983",
          "_links": 
            {
            "startAuthorisationWithPsuAuthentication": {"href": "/psd2/v1/consents/1234-wertiq-983/authorisations"}
            }
        }


    consentStatusResponseExample1:
      description: Response for a consent status request.
      value:
        { 
          "consentStatus": "valid",
        }


    paymentInitiationExample_json_Redirect:
      description: "Response in case of a redirect with an implicitly created authorisation sub-resource"
      value:
        {
          "transactionStatus": "RCVD",
          "paymentId": "1234-wertiq-983",
          "_links": 
            {
            "scaRedirect": {"href": "https://www.testbank.com/asdfasdfasdf"},
            "self": {"href": "/psd2/v1/payments/sepa-credit-transfers/1234-wertiq-983"},
            "status": {"href": "/psd2/v1/payments/1234-wertiq-983/status"},
            "scaStatus": {"href": "/psd2/v1/payments/1234-wertiq-983/authorisations/123auth456"}
            }
        }


    paymentInitiationExample_json__RedirectExplicitAuthorisation:
      description: "Response in case of a redirect with an explicit authorisation start"
      value:
        {
          "transactionStatus": "RCVD",
          "paymentId": "1234-wertiq-983",
          "_links": 
            {
            "self": {"href": "/psd2/v1/payments/1234-wertiq-983"},
            "status": {"href": "/psd2/v1/payments/1234-wertiq-983/status"},
            "startAuthorisation": {"href": "/psd2/v1/payments1234-wertiq-983/authorisations"}
            }
        }


    paymentInitiationExample_json_OAuth2:
      description: "Response in case of an OAuth2 SCA approach approach with implicitly creating an authorisation sub-resource"
      value:
        { 
          "transactionStatus": "RCVD",
          "paymentId": "1234-wertiq-983",
          "_links": 
            {
            "scaOAuth": {"href": "https://www.testbank.com/oauth/.well-known/oauth-authorization-server"},
            "self": {"href": "/psd2/v1/payments/1234-wertiq-983"},
            "status": {"href": "/psd2/v1/payments/1234-wertiq-983/status"},
            "scaStatus": {"href": "/psd2/v1/payments/1234-wertiq-983/authorisations/123auth456"}
            }
        }


    paymentInitiationExample_json_Decoupled:
      description: "Response in case of the decoupled approach with explicit start of authorisation needed"
      value:
        { 
          "transactionStatus": "RCVD",
          "paymentId": "1234-wertiq-983",
          "_links": 
            {
            "startAuthorisationWithPsuIdentification": {"href":"/v1/payments/1234-wertiq-983/authorisations"},
            "self": {"href": "/psd2/v1/payments/1234-wertiq-983"}
            }
        } 


    paymentInitiationExample_json_Embedded:
      description: "Response in case of the embedded approach with explicit start of authorisation"
      value:
        { 
          "transactionStatus": "RCVD",
          "paymentId": "1234-wertiq-983",
          "_links": 
            {
            "startAuthenticationWithPsuAuthentication": {"href": "/psd2/v1/payments/1234-wertiq-983/authorisations"},
            "self": {"href": "/psd2/v1/payments/1234-wertiq-983"}
            }
        }


    paymentInitiationStatusResponse_json_Simple:
      value:
        { 
        "transactionStatus": "ACCP"
        }


    paymentInitiationCancelResponse-202:
      value:
        {
          "transactionStatus": "ACTC",
          "_links": 
            {
            "self": {"href": "/psd2/v1/payments/123456scheduled789"},
            "status": {"href": "/psd2/v1/payments/123456scheduled789/status"},
            "startAuthorisation": {"href": "/psd2/v1/payments/123456scheduled789/cancellation-authorisations"}
            }
        }


    paymentInitiationStatusResponse_json_Extended:
      value: |
        { 
          "transactionStatus": "ACCP",
          "scaStatus": "received"
        }






    confirmationOfFundsExample:
      description: Request body for a confirmation of funds.
      value:
        {  
          "cardNumber": "12345678901234", 
          "account": {"iban": "DE23100120020123456789"},
          "instructedAmount": {"currency": "EUR", "amount": "123"}
        }


    confirmationOfFundsResponseExample:
      description: Response for a confirmation of funds request.
      value:
        {
          "fundsAvailable": "true"
        }


    balancesExample1_RegularAccount:
      description: Response for a read balance request in case of a regular account.
      value: 
        {
          "account": {
              "cashAccountType": "CACC",
              "currency": "EUR",
              "iban": "SK0402000000190037566753"
          },
          "balances": [
              {
                  "balanceAmount": {
                      "amount": 923.61,
                      "currency": "EUR"
                  },
                  "balanceType": "ownFunds",
                  "referenceDate": "2023-06-13"
              },
              {
                  "balanceAmount": {
                      "amount": 923.61,
                      "currency": "EUR"
                  },
                  "balanceType": "interimAvailable",
                  "referenceDate": "2023-06-13"
              },
              {
                  "balanceAmount": {
                      "amount": 927.61,
                      "currency": "EUR"
                  },
                  "balanceType": "interimBooked",
                  "referenceDate": "2023-06-13"
              }
          ]
        }

    balancesExample2_MulticurrencyAcount:
      description: |
        Response in case of a multicurrency account with one account in EUR, 
        one in USD, where the ASPSP has delivered a link to the balance endpoint relative to the aggregated 
        multicurrency account (aggregation level).
      value: 
        {
          "account": {
              "cashAccountType": "CACC",
              "currency": "EUR",
              "iban": "SK0402000000190037566753"
          },
          "balances": [
              {
                  "balanceAmount": {
                      "amount": 923.61,
                      "currency": "USD"
                  },
                  "balanceType": "ownFunds",
                  "referenceDate": "2023-06-13"
              },
              {
                  "balanceAmount": {
                      "amount": 923.61,
                      "currency": "USD"
                  },
                  "balanceType": "interimAvailable",
                  "referenceDate": "2023-06-13"
              },
              {
                  "balanceAmount": {
                      "amount": 927.61,
                      "currency": "USD"
                  },
                  "balanceType": "interimBooked",
                  "referenceDate": "2023-06-13"
              }
          ]
        }

    transactionsExample1_RegularAccount_json:
      description: Response in JSON format for an access on a regular account.
      value:
        {
          "account" : {
            "iban" : "SK5102000000190036035053"
          },
          "transactions" : {
            "booked" : [
               {
                  "transactionId" : "a97edccf-c076-a990-a5bd-ad7ade2cbd17",
                  "bookingDate" : "2023-06-12",
                  "valueDate" : "2023-06-12",
                  "transactionAmount" : {
                     "amount" : 2,
                     "currency" : "EUR"
                  },
                  "creditorAccount" : {
                     "iban" : "SK5102000000190036035053"
                  },
                  "debtorName" : "John Miles",
                  "debtorAccount" : {
                     "iban" : "SK2402000000190037816556",
                     "bban" : "190037816556"
                  },
                  "debtorAgent" : "SUBASKBXXXX",
                  "remittanceInformationUnstructured" : "Note for client",
                  "bankTransactionCode" : "1506",
                  "balanceAfterTransaction" : {
                     "balanceAmount" : {
                        "amount" : 77,
                        "currency" : "EUR"
                     },
                     "balanceType" : "interimBooked"
                  },
                  "intraday" : false,
                  "documentNumber" : "230607000TAPA",
                  "executionDate" : "2023-06-12",
                  "constantSymbol" : "0000",
                  "paymentStatus" : "Charged",
                  "paymentCodeName" : "Credit transfer",
                  "paymentType" : "Credit"
               }
            ],
            "paging" : {
               "pageCount" : 2,
               "pageNumber" : 1,
               "pageSize" : 100,
               "allRecords" : 128
            }
          },
          "_links" : {
            "account" : {
               "href" : "https://api-t.vub.sk/v1/accounts/SK5102000000190036035053"
            },
            "first" : {
               "href" : "https://api-t.vub.sk/v1/accounts/SK5102000000190036035053/transactions?dateFrom=2023-06-12&pageNumber=1&pageSize=100&bookingStatus=both"
            },
            "last" : {
               "href" : "https://api-t.vub.sk/v1/accounts/SK5102000000190036035053/transactions?dateFrom=2023-06-12&pageNumber=2&pageSize=100&bookingStatus=both"
            },
            "next" : {
               "href" : "https://api-t.vub.sk/v1/accounts/SK5102000000190036035053/transactions?dateFrom=2023-06-12&pageNumber=2&pageSize=100&bookingStatus=both"
            }
          }
        }

    transactionDetailsExample:
      description: Example for transaction details.
      value:
        {
          "transactionsDetails":
             {
               "transactionId": "1234567",
               "creditorName": "John Miles",
               "creditorAccount": {"iban": "DE67100100101306118605"},
               "mandateId": "Mandate-2018-04-20-1234",
               "transactionAmount": {"currency": "EUR", "amount": "-256.67"},
               "bookingDate": "2017-10-25",
               "valueDate": "2017-10-26",
               "remittanceInformationUnstructured": "Example 1",
               "bankTransactionCode": "PMNT-RDDT-ESDD",
               "intraday" : true
             }
        }
        
    #############################################################################
    
    
    
    
    #############################################################################
    

security:
  #####################################################
  # Global security options
  #####################################################
  - {}


tags:
  #####################################################
  # Predefined Tags to Group Methods
  #####################################################

  - name: Payment Initiation Service (PIS)
    description: |
      The component for Payment Initiation Service (PIS) offers the following services:
        * Initiation and update of a payment request
        * Status information of a payment
  - name: Confirmation of Funds Service (PIIS)
    description: |
      Confirmation of Funds Service (PIIS) returns a confirmation of funds request at the ASPSP.
  - name: Account Information Service (AIS)
    description: |
      The Account Information Service (AIS) offers the following services:
        * Transaction reports for a given account or card account including balances if applicable
        * Balances of a given account or card account
        * A list of available accounts or card account
        * Account details of a given account or card account or of the list of all accessible accounts or card account  relative to a granted consent
  - name: OAuth 2.0
    description: |
      The OAuth2 protocol for this API is defined in [RFC6749]. In this section, additional requirements on the protocol are defined.
      
      The response type "code" and the grant types "authorization_code" and "refresh_token" are recommended by this specification.
      
      The ASPSP is required to provide TPPs with configuration data conforming to the "OAuth 2.0 Authorisation Server Metadata" specification.
  - name: Health Check
    description: |
      Return operational status of PSD2 API.