swagger: "2.0"
x-comments:
  - The private [x-comments] structure is used to comment changes made in the OpenApi file.
  - The private [x-generic] boolean aism at pointing out generic structures that will only appear once within the functional model documentation.
  - The private [x-previous-name] string aism at providing the old name of a structure that was renamed.
  - The private [x-not-allowed-in-post] structure indicates which structures cannot be valued by the API client during a POST.
  - The private [x-definition-type] tag indicates the category of each definition.
  - It is strongly recommended to use the private [x-stet-psd2-api-reference-version] tag to indicate on which version of the STET PSD2 API the current implementation is based
  - In the case the current implementation specified a derived definition from the STET PSD2 API, it is strongly recommended to add a private [x-original-definition] tag within the derived structure in order to recall the original one's $ref.
  - In the case the current implementation specified a derived parameter from the STET PSD2 API, it is strongly recommended to add a private [x-original-parameter] tag within the derived structure in order to recall the original one's $ref.
  - The [basePath] directive might be customized within each implementation.
  - The [host] directive must be customized within each implementation.
info:
  x-comments:
    - The [title] directive might be customized within each implementation
  version: 1.6.3.2
  title: PSD2 ASPSP services for AISP, PISP and CBPII.
  description: |
    This API intends to provide an interface between
    - Account Servicing Payment Service Providers (ASPSP)
    - Third Party (Payment Service) Providers (TPP)

    TPP may act with different roles as described below:
    - Account Information Service Providers (AISP)
    - Payment Initiation Service Providers (PISP)
    - Card Based Payment Instrument Issuers (CBPII)

    The Payment Service User (PSU) is the owner of the accounts held by the ASPSP and gives accreditations to the TPP in order to access his accounts information or initiates payment from these accounts

    The API is designed on a REST model using JSON structures.

    The Richardson Maturity Model is applied on level three using HAL HYPERMEDIA links
  contact:
    name: STET
    url: https://www.stet.eu/en/psd2/
    email: psd2@stet.eu
  license:
    name: Creative Commons Attribution 3.0 France (CC BY 3.0 FR)
basePath: /v1
host: localhost
schemes:
  - https
consumes:
  - application/json
securityDefinitions:
  accessCode:
    x-comments:
      - The [authorizationUrl] and [tokenUrl] directives might be customized within each implementation
    description: |
      In order to access the PSU's account information, the AISP needs to get either an authorization code grant or a Client Initiated Backchannel Authentication token.
      In order to post a funds confirmation request, the CBPII needs to get either an authorization code grant or a Client Initiated Backchannel Authentication token when registration of the account has not been previously processed.
      In order to confirm a Payment or Transfer Request, the PISP needs to get either an authorization code grant or a Client Initiated Backchannel Authentication token.
      The client_id field within the token request must be filled with the value of the organization identifier attribute that was set in the distinguished name of eIDAS certificate of the TPP, according to ETSI recommandations.
      (cf paragraph 5.2.1 of [ETSI specfication](https://www.etsi.org/standards-search#page=1&search=TS119495))
    type: oauth2
    scopes:
      aisp: Access by an AISP to one given PSU's account
      cbpii: Access by a CBPII to one given PSU's account to check payment coverage
      pisp: Access by a PISP for posting a confirmation after authentication of the PSU through OAUTH2 Authorization Code
      extended_transaction_history: Access by an AISP to a transaction history over more than the 90 last days
    flow: accessCode
    authorizationUrl: https://oauth2.aspsp/authorization
    tokenUrl: https://oauth2.aspsp/token
  clientCredentials:
    x-comments:
      - The [tokenUrl] directives might be customized within each implementation
    description: |
      In order to post, get or cancel a Payment or Transfer Request, the PISP needs to get a client credential OAUTH2 token.
      In order to confirm a Payment or Transfer Request, the PISP needs to get either an authorization code grant or a client credential OAUTH2 token.
      In order to post a funds confirmation request, the CBPII needs to get a client credential OAUTH2 token when registration of the account has already been previously processed.
      The client_id field within the token request must be filled with the value of the organization identifier attribute that was set in the distinguished name of eIDAS certificate of the TPP, according to ETSI recommandations.
      (cf paragraph 5.2.1 of [ETSI specfication](https://www.etsi.org/standards-search#page=1&search=TS119495))
    type: oauth2
    scopes:
      pisp: Access by a PISP to payments resources
      cbpii: Access by a CBPII to one given PSU's account to check payment coverage
    flow: application
    tokenUrl: https://oauth2.aspsp/token
paths:
  /accounts:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: accountsGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of the PSU accounts (AISP)
      description: |
        ### Description
        This call returns all payment accounts that are relevant for the PSU on behalf of whom the AISP is connected.
        Thanks to HYPERMEDIA, each account is returned with the links aiming to ease access to the relevant transactions and balances.
        The result may be subject to pagination (i.e. retrieving a partial result in case of having too many results) through a set of pages by the ASPSP. Thereafter, the AISP may ask for the first, next, previous or last page of results.

        ### Prerequisites

        - The TPP was registered by the Registration Authority for the AISP role.
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
            - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) if any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.

        ### Business Flow
        The TPP sends a request to the ASPSP for retrieving the list of the PSU payment accounts.
        The ASPSP computes the relevant PSU accounts and builds the answer as an accounts list.
        The result may be subject to pagination in order to avoid an excessive result set.
        Each payment account will be provided with its characteristics.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: |
            The ASPSP return a PSU context
            - listing the accounts that were made available to the AISP by the PSU and,
            - for each of these accounts, the further transactions that were enabled by the PSU through HYPERMEDIA links.
          schema:
            $ref: "#/definitions/HalAccounts"
          headers:
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
        204:
          $ref: "#/responses/204"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /accounts/{accountResourceId}/owners:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: accountsOwnersGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of an account owners (AISP)
      description: |
        ### Description
        This call returns the owners identities for a given PSU account that is specified by the AISP through an account resource identification.
        This call cannot be used when the account is owned by a legal entity where the identity of this entity is directly available in the account structure (field [company]).
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) is any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        - The TPP has previously retrieved the list of available accounts for the PSU
        ### Business flow
        The AISP requests the ASPSP on one of the PSU's accounts.
        The ASPSP answers by the identities of the account owners.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/AccountResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: Account owners identities response
          schema:
            $ref: "#/definitions/HalOwners"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /accounts/{accountResourceId}/balances:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: accountsBalancesGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of an account balances report (AISP)
      description: |
        ### Description
        This call returns a set of balances for a given PSU account that is specified by the AISP through an account resource Identification
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) if any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        - The TPP has previously retrieved the list of available accounts for the PSU
        ### Business flow
        The AISP requests the ASPSP on one of the PSU's accounts.
        The ASPSP answers by providing a list of balances on this account.
        - The ASPSP should provide at least one balance on the account.
          - For cash account, this balance should be the accounting balance (CACC)
          - For card transactions account, the accounting balance is meaningless and must be replaced by an other type of balance (OTHR).
        - Case of no registered transaction on the account, this balance will have an amount equal to zero.
        - The ASPSP can provide other balance restitutions, e.g. instant balance, as well, if possible.
        - Actually, from the PSD2 perspective, any other balances that are provided through the Web-Banking service of the ASPSP must also be provided by this ASPSP through the API.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/AccountResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: The ASPSP answers with a list of account balances
          schema:
            $ref: "#/definitions/HalBalances"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /accounts/{accountResourceId}/transactions:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: accountsTransactionsGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of an account transaction set (AISP)
      description: |
        ### Description
        This call returns transactions for an account for a given PSU account that is specified by the AISP through an account resource identification.
        The request may use some filter parameter in order to restrict the query
          - on a given imputation date range
          - past a given incremental technical identification
        The result may be subject to pagination (i.e. retrieving a partial result in case of having too many results) through a set of pages by the ASPSP. Thereafter, the AISP may ask for the first, next, previous or last page of results.
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) is any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        - The TPP has previously retrieved the list of available accounts for the PSU
        ### Business flow
        The AISP requests the ASPSP on one of the PSU's accounts. It may specify some selection criteria.
        The ASPSP answers by a set of transactions that matches the query.
        - The result may be subject to pagination in order to avoid an excessive result set.
        - Case of no registered transaction on the account, this result will be an empty list.
        The default transaction set, in the absence of filter query parameter, has to be specified and documented by the implementation.
        The sort order of transaction might be specific to each ASPSP, due to each Information System constraints.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/AccountResourceIdentification"
        - $ref: "#/parameters/FromImputationDate"
        - $ref: "#/parameters/ToImputationDate"
        - $ref: "#/parameters/DateType"
        - $ref: "#/parameters/FromEntryReference"
        - $ref: "#/parameters/ToEntryReference"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: Complete transactions response
          schema:
            $ref: "#/definitions/HalTransactions"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /accounts/{accountResourceId}/transactions/{transactionResourceId}/details:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
        - Modified for CR521 (Remove useless  parameters when retrieving transaction details)
      operationId: accountsTransactionsDetailsGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of transaction details (AISP)
      description: |
        ### Description
        This call returns the details of a transaction from a given PSU account.
        The AISP has to specified
        - the account through an account resource identification
        - the transaction through a transaction resource identifcation
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) is any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        - The TPP has previously retrieved the list of available accounts for the PSU and the transactions from one given account
        - A transaction includes a "details" hyperlink which indicates that detailed information is available for this transaction.
        ### Business flow
        The AISP requests the ASPSP on one of the transactions.
        The ASPSP answers by the details on this transaction.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/AccountResourceIdentification"
        - $ref: "#/parameters/TransactionResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: Complete transactions response
          schema:
            $ref: "#/definitions/HalTransactionDetails"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /accounts/{accountResourceId}/overdrafts:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: accountsOverdraftsGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of an account overdraft (AISP)
      description: |
        ### Description
        This call returns the overdrafts that can be used for a given PSU account that is specified by the AISP through an account resource identification.
        The request may use some filter parameter in order to restrict the query
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) is any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        - The TPP has previously retrieved the list of available accounts for the PSU
        ### Business flow
        The AISP requests the ASPSP on one of the PSU's accounts.
        The ASPSP answers by the overdraft that can be applied.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/AccountResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: Overdraft response
          schema:
            $ref: "#/definitions/HalOverdrafts"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /consents:
    put:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: consentsPut
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/json; charset=utf-8
      summary: Forwarding the PSU consent (AISP)
      description: |
        ### Description
        In the mixed detailed consent on accounts
        - the AISP captures the consent of the PSU
        - then it forwards this consent to the ASPSP
        This consent replaces any prior consent that was previously sent by the AISP.
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role.
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
          - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) if any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        ### Business Flow
        The PSU specifies to the AISP which of his/her accounts will be accessible and which functionalities should be available.
        The AISP forwards these settings to the ASPSP.
        The ASPSP answers by HTTP201 return code.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/Consents"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        201:
          description: Created
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        501:
          $ref: "#/responses/501"
        503:
          $ref: "#/responses/503"
  /end-user-identity:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: EndUserIdentityGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of the identity of the end-user (AISP)
      description: |
        ### Description
        This call returns the identity of the PSU (end-user).
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role.
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
            - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) if any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        ### Business Flow
          The AISP asks for the identity of the PSU.
          The ASPSP answers with the identity, i.e. first and last names of the end-user.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: |
            The ASPSP returns the identity of the PSU
          schema:
            $ref: "#/definitions/HalEndUserIdentity"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
  /trusted-beneficiaries:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: trustedBeneficiariesGet
      tags:
        - AISP
      security:
        - accessCode:
            - aisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of the trusted beneficiaries list (AISP)
      description: |
        ### Description
        This call returns all trusted beneficiaries that were set by the PSU.
        Those beneficiaries can benefit from an SCA exemption during payment initiation.
        The result may be subject to pagination (i.e. retrieving a partial result in case of having too many results) through a set of pages by the ASPSP. Thereafter, the AISP may ask for the first, next, previous or last page of results.
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the AISP role.
        - The TPP and the PSU have a contract that was enrolled by the ASPSP
            - At this step, the ASPSP has delivered an OAUTH2 "Authorization Code" or "Resource Owner Password" access token to the TPP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code" or "Resource Owner Password" access token which allows the ASPSP to identify the relevant PSU and retrieve the linked PSU context (cf. paragraph  3.4.2) if any.
        - The ASPSP takes into account the access token that establishes the link between the PSU and the AISP.
        ### Business Flow
        The AISP asks for the trusted beneficiaries list.
        The ASPSP answers with a list of beneficiary details structure.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/Workspace"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: |
            The ASPSP returns the list of whitelisted beneficiaries
          schema:
            $ref: "#/definitions/HalBeneficiaries"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        204:
          $ref: "#/responses/204"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        501:
          $ref: "#/responses/501"
  /funds-confirmations:
    post:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
        - Modified for CR526 (Add an Idempotency Header)
      operationId: fundsConfirmationsPost
      tags:
        - CBPII
      security:
        - accessCode:
            - cbpii
        - clientCredentials:
            - cbpii
      produces:
        - application/hal+json; charset=utf-8
      summary: Payment coverage check request (CBPII)
      description: |
        ### Description
        The CBPII can ask an ASPSP to check if a given amount can be covered by the liquidity that is available on a PSU cash account or payment card.
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the CBPII role
        - The TPP and the PSU have a contract that was registered by the ASPSP
          - At this step, the ASPSP has delivered an "Authorization Code", a "Resource Owner Password" or a "Client Credential" OAUTH2 access token to the TPP (cf. paragraph  3.4.2).
          - Each ASPSP has to implement either the "Authorization Code"/"Resource Owner Password" or the "Client Credential" OAUTH2 access token model.
          - Doing this, it will edit the [security] section on this path in order to specify which model it has chosen
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its OAUTH2 "Authorization Code", "Resource Owner Password" or "Client Credential" access token which allows the ASPSP to identify the relevant PSU.
        ### Business flow
        The CBPII requests the ASPSP for a payment coverage check against either a bank account or a card primary identifier.
        This request cannot handle exchange rate and must be specified with the relevant account currency.
        The ASPSP answers with a structure embedding the original request and the result as a Boolean.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentCoverageRequest"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
        - $ref: "#/parameters/IdempotencyHeader"
      responses:
        200:
          description: payment coverage request
          schema:
            $ref: "#/definitions/HalPaymentCoverageReport"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /payment-requests:
    post:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
        - Modified for CR526 (Add an Idempotency Header)
      operationId: paymentRequestsPost
      tags:
        - PISP
      security:
        - clientCredentials:
            - pisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Payment request initiation (PISP)
      description: |
        ### Description
        The following use cases can be applied:
        - payment request on behalf of a merchant
        - transfer request on behalf of the account's owner
        - standing-order request on behalf of the account's owner
        #### Data content
        A payment request or a transfer request might embed several payment instructions having
        - one single execution date or multiple execution dates
        - one single beneficiary or multiple beneficiaries
        Having at the same time multiple beneficiaries and multiple execution date might not be a relevant business case, although it is technically allowed.
        Each implementation will have to specify which business use cases are actually supported.
        A standing order request must embed one single payment instruction and must address one single beneficiary.
        - The beneficiary must be set at the payment level
        - The standing order specific characteristics (start date, periodicity...) must be set at the instruction level

        Payment request can rely for execution on different payment instruments:
        - SEPA Credit Transfer (SCT)
        - Domestic Credit Transfer in a non-Euro-currency
        - International payment
        The following table indicates how to use the different fields, depending on the payment instrument:

        | Structure | SEPA payments | Domestic payments in non-euro currency | International payments |
        | --------- | ------------- | -------------------------------------- | ---------------------- |
        | PaymentTypeInformation/InstructionPriority (payment level) | "HIGH" for high-priority SCT, "NORM" for other SCT, Ignored for SCTInst | "HIGH" for high-priority CT, "NORM" or ignored for other CT | "HIGH" for high-priority payments, "NORM" or ignored for other payments |
        | PaymentTypeInformation/ServiceLevel (payment level) | "SEPA" for SCT and SCTInst | ignored | ignored |
        | PaymentTypeInformation/CategoryPurpose (payment level) | "CASH" for transfer request, "DVPM" for payment request on behalf of a merchant || "CORT" for generic international payments, "INTC" for transfers between two branches within the same company, "TREA" for treasury transfers |
        | PaymentTypeInformation/LocalInstrument (payment level) | "INST" pour les SCTInst, otherwise ignored | Ignored or valued with ISO20022 external code ||
        | RequestedExecutionDate (at transaction level) | Optional. if set by the PISP, it indicates the date on debit on the ordering party account. If not set by the PISP, this requests the ASPSP to execute the payment instruction as soon as possible. |||
        | EndToEndIdentification (at transaction level) | Mandatory | Optional ||
        | UltimateDebtor (at transaction level) | Optional |||
        | UltimateCreditor (at transaction level) | Optional |||
        | InstructedAmount (at transaction level) | Mandatory || Mandatory and exclusive use of one of these structures |
        | EquivalentAmount (at transaction level) | Not used || Mandatory and exclusive use of one of these structures |
        | ChargeBearer (at transaction level) | "SLEV" for SCT and SCTInst | "SLEV" or "SHAR" | "CRED", "DEBT" or "SHAR" |
        | Purpose (at transaction level) | Optional |||
        | RegulatoryReportingCode (at transaction level) | Not used | Mandatory (possibly multiple values) |
        | InstructionForCreditorAgent (at transaction level) | Not used || Optional (possibly multiple values) |
        | RemittanceInformation | Mandatory. Structured or unstructured, depending on the local rules and constraints |||
        | Debtor (at payment level) | Mandatory, 2 address lines only | Mandatory, 4 address lines only | Mandatory. Complete strustured address can be used. |
        | DebtorAccount (at payment level) | Optional | Optional. Account currency may be specified ||
        | DebtorAgent (at payment level) | Optional |||
        | Creditor (at transaction level) | Mandatory, 2 address lines only | Mandatory, 4 address lines only | Mandatory. Complete strustured address can be used. Date and place of birth must be specified |
        | CreditorAccount (at transaction level) | Mandatory | Mandatory. Account currency may be specified ||
        | CreditorAgent (at transaction level) | Optional |||
        | ClearingSystemId et ClearingSystemMemberId (at transaction level) | Not used || Optional |
        | IntermediaryAgent et IntermediaryAgentAccount (at transaction level) | Not used | Optional ||

        #### Prerequisites for all use cases
        - The TPP was registered by the Registration Authority for the PISP role
        - The TPP was provided with an OAUTH2 "Client Credential" access token by the ASPSP (cf. paragraph  3.4.2).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its "OAUTH2 Client Credential" access token

        #### Business flow
        ##### Payment Request use case
        The PISP forwards a payment request on behalf of a merchant.
        The PSU buys some goods or services on an e-commerce website held by a merchant. Among other payment method, the merchant suggests the use of a PISP service. As there is obviously a contract between the merchant and the PISP, there is no need for the ASPSP to check the existence of such a contract between the PSU and this PISP to initiate the process.
        Case of the PSU that chooses to use the PISP service:
        - The merchant forwards the requested payment characteristics to the PISP and redirects the PSU to the PISP portal.
        - The PISP requests from the PSU which ASPSP will be used.
        - The PISP prepares the Payment Request and sends this request to the ASPSP.
        - The Request can embed several payment instructions having different requested execution date.
        - The beneficiary, as being the merchant, is set at the payment level.

          ##### Transfer Request use case
          The PISP forwards a transfer request on behalf of the owner of the account.
          - The PSU provides the PISP with all information needed for the transfer.
          - The PISP prepares the Transfer Request and sends this request to the relevant ASPSP that holds the debtor account.
          - The Request can embed several payment instructions having different beneficiaries.
          - The requested execution date, as being the same for all instructions, is set at the payment level.

          ##### Standing Order Request use case
          The PISP forwards a Standing Order request on behalf of the owner of the account.
          - The PSU provides the PISP with all information needed for the Standing Order.
          - The PISP prepares the Standing Order Request and sends this request to the relevant ASPSP that holds the debtor account.
          - The Request embeds one single payment instruction with
            - The requested execution date of the first occurrence
            - The requested execution frequency of the payment in order to compute further execution dates
            - An execution rule to handle cases when the computed execution dates cannot be processed (e.g. bank holydays)
            - An optional end date for closing the standing Order
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentRequest"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/UiLocales"
        - $ref: "#/parameters/PsuWorkspace"
        - $ref: "#/parameters/JwSignatureHeader"
        - $ref: "#/parameters/IdempotencyHeader"
      responses:
        201:
          description: The request was created as a resource. The ASPSP must authenticate the PSU.
          schema:
            $ref: "#/definitions/HalAuthenticationRequest"
          headers:
            location:
              description: |
                URI of the created (and updated if needed) Payment Request.
                Actually, this link is the URI to be used (cf. paragraph  4.6) for retrieving the Payment Request ant its status:
                - GET /payment-requests/{paymentRequestResourceId}
                The parameter {paymentRequestResourceId} is the identifier of the Payment Request, as the resource that was created on the ASPSP server side.
              type: string
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /payment-requests/{paymentRequestResourceId}:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: paymentRequestsGet
      tags:
        - PISP
      security:
        - clientCredentials:
            - pisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of a payment request (PISP)
      description: |
        ### Description
        The following use cases can be applied:
        - retrieval of a payment request on behalf of a merchant
        - retrieval of a transfer request on behalf of the account's owner
        - retrieval of a standing-order request on behalf of the account's owner

        The PISP has previously sent a Request through a POST command.
        - The ASPSP has registered the Request, updated if necessary the relevant identifiers in order to avoid duplicates and returned the location of the updated Request.
        - The PISP gets the Request that was updated with the resource identifiers, and eventually the status of the Payment/Transfer Request and the status of the subsequent credit transfer.

        ### Prerequisites
        - The TPP was registered by the Registration Authority for the PISP role
        - The TPP was provided with an OAUTH2 "Client Credential" access token by the ASPSP (cf. paragraph  3.4.2).
        - The TPP has previously posted a Request which was saved by the ASPSP (cf. paragraph  4.5.3)
          - The ASPSP has answered with a location link to the saved Payment/Transfer Request (cf. paragraph  4.5.4)
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP has presented its "OAUTH2 Client Credential" access token

        ### Business flow
        The PISP asks to retrieve the Payment/Transfer Request that was saved by the ASPSP. The PISP uses the location link provided by the ASPSP in response of the posting of this request.
        The ASPSP returns the previously posted Payment/Transfer Request which is enriched with:
        - The resource identifiers given by the ASPSP
        - The status information of the Payment Request and of the subsequent credit transfer
        The status information must be available during at least 30 calendar days after the posting of the Payment Request. However, the ASPSP may increase this availability duration, based on its own rules.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentRequestResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: Retrieval of the previously posted Payment Request
          schema:
            $ref: "#/definitions/HalPaymentRequest"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
    put:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: paymentRequestPut
      tags:
        - PISP
      security:
        - clientCredentials:
            - pisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Cancellation of a Payment/Transfer Request (PISP)
      description: |
        ### Description
        The PISP sent a Payment/Transfer Request through a POST command.
        The ASPSP registered the Payment/Transfer Request, updated if necessary the relevant identifiers in order to avoid duplicates and returned the location of the updated Request.
        The PISP got the Payment/Transfer Request that was updated with the resource identifiers, and eventually the status of the Payment/Transfer Request and the status of the subsequent credit transfer.
        The PISP requests for the payment cancellation (global cancellation) or for some payment instructions cancellation (partial cancellation)
        No other modification of the Payment/Transfer Request is allowed.
        ### Prerequisites
        - The TPP was registered by the Registration Authority for the PISP role
        - The TPP was provided with an OAUTH2 "Client Credential" access token by the ASPSP (cf. paragraph  3.4.2).
        - The TPP previously posted a Payment/Transfer Request which was saved by the ASPSP (cf. paragraph  4.5.3)
          - The ASPSP answered with a location link to the saved Payment/Transfer Request (cf. paragraph  4.5.4)
          - The PISP retrieved the saved Payment/Transfer Request (cf. paragraph  4.5.4)
        - The TPP and the ASPSP successfully processed a mutual check and authentication
        - The TPP presented its "OAUTH2 Client Credential" access token.
        - The TPP presented the payment/transfer request.
        - The PSU was successfully authenticated.

        ### Business flow
        #### Payment/Transfer request cancellation circumstances
        The cancellation of a Payment/Transfer request might be triggered by the PISP upon request of the PSU.
        It can also be triggered by the PISP itself in case of error or fraud detection.
        Since the consequence of the cancellation will be a rejection of the Payment/Transfer request globally or limited to some of its instructions, the modification of the payment request will focus on setting the relevant status to the value "CANC".
        This "CANC" status must however be explained through a reason code that can be set with the following values:

        | Reason | description |
        | ------ | ----------- |
        | DS02 | The PSU himsef/herself ordered the cancellation. |
        | DUPL | The PISP requested the cancellation for a duplication of a previous Payment/Transfer request |
        | FRAD | The PISP requested the cancellation for fraudulent origin of the Payment/Transfer request |
        | TECH | The PISP requested the cancellation for a technical issue on its side |

        #### Payment/Transfer request cancellation level
        - Case of a payment with multiple instructions or a standing order, the PISP asks to cancel the whole Payment/Transfer or Standing Order Request including all non-executed payment instructions by setting the [paymentInformationStatus] and the relevant [statusReasonInformation]  at payment level.
        - Case of a payment with multiple instructions, the PISP asks to cancel one or several payment instructions by setting the [transactionStatus] and the relevant [statusReasonInformation] at each relevant instruction level.

        The cancellation request might need a PSU authentication before committing, especially when the request is PSU-driven. In other cases, the ASPSP may consider that a PSU authentication is irrelevant.
        In order to meet all possibilities, the cancellation request must nevertheless include:
        - The specification of the authentication approaches that are supported by the PISP (any combination of "REDIRECT" and "DECOUPLED" values).
        - In case of possible REDIRECT or DECOUPLED authentication approach, one or two call-back URLs to be used by the ASPSP at the finalisation of the authentication and consent process :
          - The first call-back URL will be called by the ASPSP if the Transfer Request is processed without any error or rejection by the PSU
          - The second call-back URL is to be used by the ASPSP in case of processing error or rejection by the PSU. Since this second URL is optional, the PISP might not provide it. In this case, the ASPSP will use the same URL for any processing result.
          - Both call-back URLS must be used in a TLS-secured request.
        - In case of possible "DECOUPLED" approach, a PSU identifier that can be processed by the ASPSP for PSU recognition.

        - The ASPSP saves the updated Payment/Transfer Request and answers to the PISP. The answer embeds
          - The specification of the chosen authentication approach taking into account both the PISP and the PSU capabilities.
          - In case of chosen REDIRECT authentication approach, the URL to be used by the PISP for redirecting the PSU in order to perform an authentication.

        Case of the PSU neither gives nor denies his/her consent, the Cancellation Request shall expire and is then rejected to the PISP. The expiration delay is specified by each ASPSP.
        If any modification of the payment request other than cancellation is applied by the PISP, the ASPSP must reject the request with HTTP403 without modifying the payment request resource.

        There is no need for the PISP to post a confirmation of the cancellation request.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentRequestResourceIdentification"
        - $ref: "#/parameters/PaymentRequest"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: The cancellation request was saved. The ASPSP may have to authenticate the PSU before committing the update.
          schema:
            $ref: "#/definitions/HalAuthenticationRequest"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        404:
          $ref: "#/responses/404"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        409:
          $ref: "#/responses/409"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /payment-requests/{paymentRequestResourceId}/confirmation:
    post:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
        - Modified for CR526 (Add an Idempotency Header)
      operationId: paymentRequestConfirmationPost
      tags:
        - PISP
      security:
        - accessCode:
            - pisp
        - clientCredentials:
            - pisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Confirmation of a payment request using an OAUTH2 Authorization code grant (PISP)
      description: |
        ### Description
        The PISP confirms one of the following requests or modifications:
        - payment request on behalf of a merchant
        - transfer request on behalf of the account's owner
        - standing-order request on behalf of the account's owner
        The ASPSP answers with a status of the relevant request and the subsequent Credit Transfer.

        ### Prerequisites
        -  The TPP was registered by the Registration Authority for the PISP role
        -  The TPP was provided with an OAUTH2 "Client Credential" access token by the ASPSP (cf. paragraph  3.4.2).
        -  The TPP has previously posted a Request which was saved by the ASPSP (cf. paragraph  4.5.3)
          - The ASPSP has answered with a location link to the saved Payment Request (cf. paragraph  4.5.4)
          -  The TPP has retrieved the saved request in order to get the relevant resource Ids (cf. paragraph  4.6).
        -  The PSU was authenticated by the ASPSP through an OAUTH2 authorization code grant flow (REDIRECT approach) and the PISP got the relevant token
        -  The TPP and the ASPSP have successfully processed a mutual check and authentication
        -  The TPP has presented its "OAUTH2 Authorization Code" access token

        ### Business flow
        Once the PSU was authenticated through an OAUTH2 authorization code grant flow (REDIRECT approach), it is the due to the PISP to confirm the Request to the ASPSP in order to complete the process flow.
        The ASPSP must wait for confirmation before executing the subsequent Credit Tranfer.
        Any further confirmation by the PISP on the same Payment-Request must be ignored.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentRequestResourceIdentification"
        - $ref: "#/parameters/Confirmation"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
        - $ref: "#/parameters/IdempotencyHeader"
      responses:
        200:
          description: retrieval of the Payment Request enriched with the status report
          schema:
            $ref: "#/definitions/HalPaymentRequest"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        409:
          $ref: "#/responses/409"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
  /payment-requests/{paymentRequestResourceId}/transactions:
    get:
      x-comments:
        - Modified for CR408 (Implementation of Json Web Signature Profile)
      operationId: paymentRequestTransactionsGet
      tags:
        - PISP
      security:
        - clientCredentials:
            - pisp
      produces:
        - application/hal+json; charset=utf-8
      summary: Retrieval of the Credit Transfert Transactions that were processed for a given payment request (PISP)
      description: |
        ### Description
        The PISP gets the execution history of a payment request.
        This entry-point is an alternative to the retrieval of the history through the retrieval of the payment request.
        So, each ASPSP may choose or not to implement this entry-point.

        ### Prerequisites
        - The TPP was registered by the Registration Authority for the PISP role
        - The TPP has previously posted a Standing Order Request which was saved by the ASPSP (cf. paragraph  4.5.3)
          - The ASPSP has answered with a location link to the saved Payment Request (cf. paragraph  4.5.4)
          - The TPP has retrieved the saved request in order to get the relevant resource Ids (cf. paragraph  4.6).
        - The TPP and the ASPSP have successfully processed a mutual check and authentication
        - The TPP was provided with an OAUTH2 "Client Credential" access token by the ASPSP (cf. paragraph  3.4.2).
        - The TPP presented its "OAUTH2 Client Credential" access token.

        ### Business flow
        The PISP post the history request.
        The ASPSP answers with the list of relevant transactions.
      parameters:
        - $ref: "#/parameters/AuthorizationParameter"
        - $ref: "#/parameters/PaymentRequestResourceIdentification"
        - $ref: "#/parameters/PsuIpAddressHeader"
        - $ref: "#/parameters/PsuIpPortHeader"
        - $ref: "#/parameters/PsuHttpMethodHeader"
        - $ref: "#/parameters/PsuDateHeader"
        - $ref: "#/parameters/PsuGeoLocation"
        - $ref: "#/parameters/PsuUserAgentHeader"
        - $ref: "#/parameters/PsuRefererHeader"
        - $ref: "#/parameters/PsuAcceptHeader"
        - $ref: "#/parameters/PsuAcceptCharsetHeader"
        - $ref: "#/parameters/PsuAcceptEncodingHeader"
        - $ref: "#/parameters/PsuAcceptLanguageHeader"
        - $ref: "#/parameters/PsuDeviceId"
        - $ref: "#/parameters/DigestHeader"
        - $ref: "#/parameters/SignatureHeader"
        - $ref: "#/parameters/Correlation"
        - $ref: "#/parameters/JwSignatureHeader"
      responses:
        200:
          description: retrieval of the Payment Request enriched with the status report
          schema:
            $ref: "#/definitions/HalCreditTransfertTransactions"
          headers:
            X-Request-ID:
              description: |
                Correlation header to be set in a request and retrieved in the relevant response
              type: string
            Digest:
              description: Digest of the body
              type: string
            Signature:
              description: |
                [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
                The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
              type: string
            Warning:
              description: |
                Warning header.
                This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
              type: string
        400:
          $ref: "#/responses/400"
        401:
          $ref: "#/responses/401"
        403:
          $ref: "#/responses/403"
        405:
          $ref: "#/responses/405"
        406:
          $ref: "#/responses/406"
        408:
          $ref: "#/responses/408"
        409:
          $ref: "#/responses/409"
        429:
          $ref: "#/responses/429"
        500:
          $ref: "#/responses/500"
        503:
          $ref: "#/responses/503"
responses:
  204:
    description: No content.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  400:
    description: Invalid status value
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 400
        error: Bad Request
        message: This Authentication Approach is not available
        details:
          - path: "$.supplementaryData.acceptedAuthenticationApproach"
            erroneousValue: EMBEDDED
            expectedEnumeration:
              - REDIRECT
              - DECOUPLED
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  401:
    description: Unauthorized, authentication failure.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 401
        error: Unauthorized
        message: Authentication failed; the access token is missing, invalid or expired.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  403:
    description: Forbidden, authentication successful but access to resource is not allowed.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 403
        error: Forbidden
        message: Authentication succeeded but access to the requested resource is not allowed.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  404:
    description: Not found, no request available.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 404
        error: Not Found
        message: The requested resource does not exist.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  405:
    description: Method Not Allowed.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 405
        error: Method Not Allowed
        message: The HTTP method is not supported for this resource.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  406:
    description: Not Acceptable.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 406
        error: Not Acceptable
        message: The requested representation is not available for this resource.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  408:
    description: Request Timeout.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 408
        error: Request Timeout
        message: The server timed out waiting for the request.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  409:
    description: |
      Conflict.
      The request could not be completed due to a conflict with the current state of the target resource.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 409
        error: Conflict
        message: The request could not be completed due to a conflict with the current state of the resource.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  429:
    description: Too many requests.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 429
        error: Too Many Requests
        message: The rate limit has been exceeded. Please retry later.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
      Warning:
        description: |
          Warning header.
          This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.
        type: string
  500:
    description: Internal server error.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 500
        error: Internal Server Error
        message: An unexpected error occurred while processing the request.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
  501:
    description: |
      Not Implemented.
      This code should be used when the entry point is implemented but cannot provide a result, given the context.
      When the entry point is not implemented at all, HTTP400 will be returned.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 501
        error: Not Implemented
        message: The entry point is implemented but cannot provide a result given the context.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
  503:
    description: Service unavailable.
    schema:
      $ref: "#/definitions/ErrorModel"
    examples:
      application/json:
        timestamp: "2021-03-17T16:47:00.187248+01:00"
        status: 503
        error: Service Unavailable
        message: The service is temporarily unavailable. Please retry later.
    headers:
      X-Request-ID:
        description: |
          Correlation header to be set in a request and retrieved in the relevant response
        type: string
definitions:
  ErrorModel:
    x-definition-type: Technical
    description: Generic error report structure
    type: object
    required:
      - status
      - message
    properties:
      timestamp:
        description: current timestamp
        type: string
        format: date-time
      status:
        description: HTTP error code
        type: integer
        format: int32
      error:
        description: HTTP error text
        type: string
        maxLength: 140
      message:
        description: HTTP textual reason phrase
        type: string
        maxLength: 140
      path:
        description: Relevant path that was used
        type: string
        maxLength: 140
      details:
        description: list of detailed errors that were encountered
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/ErrorDetail"
    example: |-
      {
        "timestamp" : "2021-03-17T16:47:00.187248+01:00",
        "status" : 400,
        "error" : "Bad Request",
        "message" : "This Authentication Approach is not available",
        "details" : [ {
          "path" : "$.supplementaryData.acceptedAuthenticationApproach",
          "erroneousValue" : "EMBEDDED",
          "expectedEnumeration" : [ "REDIRECT", "DECOUPLED" ]
        } ]
      }
  AuthenticationApproach:
    x-definition-type: Technical
    description: |
      Authentication approaches that can be applied.
      REDIRECT: the PSU is redirected by the TPP to the ASPSP which processes identification and authentication
      DECOUPLED: the TPP identifies the PSU and forwards the identification to the ASPSP which processes the authentication through a decoupled device
      NONE: there is no need for the PSU to authenticate
    type: string
    enum:
      - REDIRECT
      - DECOUPLED
      - EMBEDDED-1-FACTOR
      - NONE
  AuthenticationApproaches:
    x-definition-type: Technical
    description: List of authentication approaches
    type: array
    items:
      $ref: "#/definitions/AuthenticationApproach"
  GenericLink:
    x-definition-type: Hal
    x-generic: true
    description: hypertext reference
    type: object
    required:
      - href
    properties:
      href:
        description: URI to be used. HREF stands for Hypertext REFerence.
        type: string
        maxLength: 2000
      templated:
        description: |
          This field must be set with "true"  when [href] is an URI template, i.e. with parameters that will be set by the client afterwards. Parameter fields must be included by the API server according to RFC6570.
          Otherwise, this property must be absent or set to false
          default value: false
        type: boolean
    example: |-
      {
        "href" : "/v1/accounts"
      }
  AccountListLinks:
    x-definition-type: Hal
    description: |
      Links that can be used for further navigation when browsing Account Information at top level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the list of all available accounts |
      | consents | link to the consents forwarding |
      | endUserIdentity | link to the end-user identity|
      | trustedBeneficiaries | link to the list of trusted beneficiaries |
      | worspaces | array of link to each relevant workspaces |
      | first | link to the first page of the accounts result |
      | last | link to the last page of the accounts result |
      | next | link to the next page of the accounts result |
      | prev | link to the previous page of the accounts result |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      consents:
        $ref: "#/definitions/GenericLink"
      endUserIdentity:
        $ref: "#/definitions/GenericLink"
      trustedBeneficiaries:
        $ref: "#/definitions/GenericLink"
      workspaces:
        description: list of all workspaces that can be accessed by the PSU
        type: array
        items:
          $ref: "#/definitions/GenericLink"
      first:
        $ref: "#/definitions/GenericLink"
      last:
        $ref: "#/definitions/GenericLink"
      next:
        $ref: "#/definitions/GenericLink"
      prev:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "/v1/accounts"
        },
        "consents" : {
          "href" : "/v1/consents"
        },
        "endUserIdentity" : {
          "href" : "v1/end-user-identity"
        },
        "trustedBeneficiaries" : {
          "href" : "/v1/trusted-beneficiaries"
        },
        "workspaces": [
          {
            "href": "v1/accounts?worspace=PRO_1",
            "templated": true
          },
          {
            "href": "v1/accounts?worspace=PRO_2",
            "templated": true
          }
        ]
      }
  AccountLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing Account Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | owners | link to the owners identities for a given account |
      | balances | link to the balances of a given account |
      | transactions | link to the transactions of a given account |
      | overdrafts | link to the lists of overdrafts of a given account |
    type: object
    readOnly: true
    properties:
      owners:
        $ref: "#/definitions/GenericLink"
      balances:
        $ref: "#/definitions/GenericLink"
      transactions:
        $ref: "#/definitions/GenericLink"
      overdrafts:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "balances" : {
          "href" : "/v1/accounts/Alias1/balances"
        },
        "transactions" : {
          "href" : "/v1/accounts/Alias1/transactions"
        },
        "overdrafts" : {
          "href" : "/v1/accounts/Alias1/overdrafts"
        }
      }
  OwnersLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing balances Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the owners of a given account |
      | parent-list | link to the list of all available accounts |
      | balances | link to the balances for a given account |
      | transactions | link to the transactions of a given account |
      | overdrafts | link to the lists of overdrafts of a given account |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      parent-list:
        $ref: "#/definitions/GenericLink"
      balances:
        $ref: "#/definitions/GenericLink"
      transactions:
        $ref: "#/definitions/GenericLink"
      overdrafts:
        $ref: "#/definitions/GenericLink"
    example: "{\n  \"self\": {\n    \"href\": \"/v1/accounts/myAccountId/owners\"\n  },\n  \"parentList\": {\n    \"href\": \"/v1/accounts\"\n  },\n  \"balances\": {\n    \"href\": \"/v1/accounts/myAccountId/balances\"\n  },\n  \"transactions\": {\n    \"href\": \"/v1/accounts/myAccountId/transactions\"\n  },\n  \"overdrafts\": {\n    \"href\": \"/v1/accounts/myAccountId/overdrafts\"\n  }\n}    "
  BalancesLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing balances Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the balances of a given account |
      | parent-list | link to the list of all available accounts |
      | owners | link to the owners identities for a given account |
      | transactions | link to the transactions of a given account |
      | overdrafts | link to the lists of overdrafts of a given account |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      parent-list:
        $ref: "#/definitions/GenericLink"
      owners:
        $ref: "#/definitions/GenericLink"
      transactions:
        $ref: "#/definitions/GenericLink"
      overdrafts:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "/v1/accounts/myAccountId/balances"
        },
        "parent-list" : {
          "href" : "/v1/accounts"
        },
        "transactions" : {
          "href" : "/v1/accounts/myAccountId/transactions"
        },
        "overdrafts" : {
          "href" : "/v1/accounts/myAccountId/overdrafts"
        }
      }
  TransactionsLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing transactions Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the transactions of a given account |
      | parent-list | link to the list of all available accounts |
      | owners | link to the owners identities for a given account |
      | balances | link to the balances of a given account |
      | overdrafts | link to the lists of overdrafts of a given account |
      | first | link to the first page of the transactions result |
      | last | link to the last page of the transactions result |
      | next | link to the next page of the transactions result |
      | prev | link to the previous page of the transactions result |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      parent-list:
        $ref: "#/definitions/GenericLink"
      owners:
        $ref: "#/definitions/GenericLink"
      balances:
        $ref: "#/definitions/GenericLink"
      overdrafts:
        $ref: "#/definitions/GenericLink"
      first:
        $ref: "#/definitions/GenericLink"
      last:
        $ref: "#/definitions/GenericLink"
      next:
        $ref: "#/definitions/GenericLink"
      prev:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "/v1/accounts/Alias1/transactions"
        },
        "parent-list" : {
          "href" : "/v1/accounts"
        },
        "balances" : {
          "href" : "/v1/accounts/Alias1/balances"
        },
        "overdrafts" : {
          "href" : "/v1/accounts/Alias1/overdrafts"
        },
        "last" : {
          "href" : "/v1/accounts/Alias1/transactions?page=last"
        },
        "next" : {
          "href" : "/v1/accounts/Alias1/transactions?page=next"
        }
      }
  OverdraftsLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing overdrafts Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the overdrafts of a given account |
      | parent-list | link to the list of all available accounts |
      | owners | link to the owners identities for a given account |
      | balances | link to the balances of a given account |
      | transactions | link to the transactions of a given account |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      parent-list:
        $ref: "#/definitions/GenericLink"
      owners:
        $ref: "#/definitions/GenericLink"
      balances:
        $ref: "#/definitions/GenericLink"
      transactions:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "/v1/accounts/Alias1/overdrafts"
        },
        "parent-list" : {
          "href" : "/v1/accounts"
        },
        "balances" : {
          "href" : "/v1/accounts/Alias1/balances"
        },
        "transactions" : {
          "href" : "/v1/accounts/Alias1/transactions"
        }
      }
  EndUserIdentityLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation after retrieving end-user identity
      | Link | Description |
      | ---- | ----------- |
      | self | link to the end-user identity |
      | accounts | link to the list of all available accounts |
      | consents | link to the consents forwarding |
      | trustedBeneficiaries | link to the list of trusted beneficiaries |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      accounts:
        $ref: "#/definitions/GenericLink"
      consents:
        $ref: "#/definitions/GenericLink"
      trustedBeneficiaries:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "v1/end-user-identity"
        },
        "accounts" : {
          "href" : "/v1/accounts"
        },
        "consents" : {
          "href" : "/v1/consents"
        },
        "trustedBeneficiaries" : {
          "href" : "/v1/trusted-beneficiaries"
        }
      }
  BeneficiariesLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when browsing Account Information at one account level
      | Link | Description |
      | ---- | ----------- |
      | self | link to the list of trusted beneficiaries |
      | accounts | link to the list of all available accounts |
      | consents | link to the consents forwarding |
      | endUserIdentity | link to the end-user identity |
      | first | link to the first page of the beneficiaries result |
      | last | link to the last page of the beneficiaries result |
      | next | link to the next page of the beneficiaries result |
      | prev | link to the previous page of the beneficiaries result |
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      accounts:
        $ref: "#/definitions/GenericLink"
      consents:
        $ref: "#/definitions/GenericLink"
      endUserIdentity:
        $ref: "#/definitions/GenericLink"
      first:
        $ref: "#/definitions/GenericLink"
      last:
        $ref: "#/definitions/GenericLink"
      next:
        $ref: "#/definitions/GenericLink"
      prev:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "/v1/trusted-beneficiaries"
        },
        "accounts" : {
          "href" : "/v1/accounts"
        }
      }
  PaymentRequestLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when having post a Payment Request in order to get the relevant status report.
      | Link | Description |
      | ---- | ----------- |
      | request | This link provides the payment-request URL for retrieving or modifying |
      | confirmation | This link shall not be provided when the confirmation was already posted. |
      | transactions | The ASPSP might choose to provide the relevant transactions of a Payment Request through a specific link |
    type: object
    readOnly: true
    properties:
      request:
        $ref: "#/definitions/GenericLink"
      confirmation:
        $ref: "#/definitions/GenericLink"
      transactions:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "request" : {
          "href" : "/v1/payment-requests/MyPmtInfRscId"
        },
        "confirmation" : {
          "href" : "/v1/payment-requests/MyPmtInfRscId/confirmation"
        }
      }
  CreditTransferTransactionLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation when retrieving the transaction of a payment request.
      | Link | Description |
      | ---- | ----------- |
      | self | link to the transactions |
      | parent | This link shall point to the parent payment request. |
      | first | link to the first page of the transactions result |
      | last | link to the last page of the transactions result |
      | next | link to the next page of the transactions result |
      | prev | link to the previous page of the transactions result |
    type: object
    readOnly: true
    properties:
      self:
        $ref: "#/definitions/GenericLink"
      parent:
        $ref: "#/definitions/GenericLink"
      first:
        $ref: "#/definitions/GenericLink"
      last:
        $ref: "#/definitions/GenericLink"
      next:
        $ref: "#/definitions/GenericLink"
      prev:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self": {
          "href": "/v1/payment-requests/MyPmtInfRscId/creditTransfertTransactions"
        },
        "parent": {
          "href": "/v1/payment-requests/MyPmtInfRscId"
        }
      }
  PaymentCoverageReportLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation to post another coverage request.
    type: object
    readOnly: true
    required:
      - self
    properties:
      self:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "self" : {
          "href" : "v1/funds-confirmations"
        }
      }
  PaymentRequestResourceCreationLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further navigation, especially in REDIRECT approach
      | Link | Description |
      | ---- | ----------- |
      | consentApproval | URL to be used by the PISP in order to start the ASPSP authentication and consent management process |
    type: object
    readOnly: true
    properties:
      consentApproval:
        $ref: "#/definitions/GenericLink"
    example: |-
      {
        "consentApproval" : {
          "href" : "https://psd2.aspsp/consent-approval"
        }
      }
  GenericIdentification:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Unique identification of an account, a person or an organisation, as assigned by an issuer.
      API: The ASPSP will document which account reference type it will support.
    type: object
    required:
      - identification
      - schemeName
    properties:
      identification:
        description: |
          API: Identifier
        type: string
        maxLength: 70
      schemeName:
        description: |
          Name of the identification scheme.
          Possible values for the scheme name, partially based on ISO20022 external code list, are the following:
          | Code | Name | Description |
          | ---- | ---- | ----------- |
          | BANK | BankPartyIdentification | Unique and unambiguous assignment made by a specific bank or similar financial institution to identify a relationship as defined between the bank and its client. |
          | BBAN | BBANIdentifier | Basic Bank Account Number (BBAN) - identifier used nationally by financial institutions, ie, in individual countries, generally as part of a National Account Numbering Scheme(s), to uniquely identify the account of a customer. |
          | COID | CountryIdentificationCode) : Country authority given organisation identification (e.g., corporate registration number) |
          | SREN | SIREN | The SIREN number is a 9 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation in France. |
          | SRET | SIRET | The SIRET number is a 14 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation unit in France. It consists of the SIREN number, followed by a five digit classification number, to identify the local geographical unit of that entity. |
          | NIDN | NationalIdentityNumber | Number assigned by an authority to identify the national identity number of a person. |
          Other values are also permitted, for instance:
          | Code | Name | Description |
          | ---- | ---- | ----------- |
          | OAUT | OAUTH2 | OAUTH2 access token that is owned by the PISP being also an AISP and that can be used in order to identify the PSU |
          | CPAN | CardPan | Card PAN |
          | MPAN | MaskedPan | Card PAN where some digits were replaced for security reason |
          | TPAN | TokenizedPan | Token which was provided by a Token Service Provider (TSP) in order to obfuscate a real card PAN. The TSP must be identified in the issuer field |
          | TBAN | TokenizedIBAN | Token which was provided by a Token Service Provider (TSP) in order to obfuscate an IBAN. The TSP must be identified in the issuer field |
          Each implementation of the STET PSD2 API must specify in its own documentation which schemes can actually been used
        type: string
        maxLength: 70
      issuer:
        description: |
          ISO20022: Entity that assigns the identification. this could a country code or any organisation name or identifier that can be recognized by both parties
        type: string
        maxLength: 35
    example: |-
      {
        "identification" : "12FR5",
        "schemeName" : "COID",
        "issuer" : "ACPR"
      }
  AccountIdentification:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      Unique and unambiguous identification for the account between the account owner and the account servicer.
      Card accounts must provide the identification of the card through the "other" substructure by giving, for instance, the masked PAN (MPAN).
      The currency used for the account, when needed, can be specified through the [currency] field.
    type: object
    properties:
      workspace:
        description: |
          Workspace to which the account is linked.
          This workspace might be specified by the AISP when forwarding the consent on accounts.
          If not provided, the default workspace is computed from the authentication that was used for getting the OAuth2 Access Token.
        type: string
        maxLength: 32
      iban:
        description: |
          ISO20022: International Bank Account Number (IBAN) - identification used internationally by financial institutions to uniquely identify the account of a customer.

          Further specifications of the format and content of the IBAN can be found in the standard ISO 13616 "Banking and related financial services - International Bank Account Number (IBAN)" version 1997-10-01, or later revisions.
        type: string
        pattern: "^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$"
      other:
        $ref: "#/definitions/GenericIdentification"
      currency:
        $ref: "#/definitions/CurrencyCode"
    example: |-
      {
        "workspace": "PRO_1",
        "iban" : "YY64COJH41059545330222956960771321",
        "currency" : "EUR"
      }
  CurrencyCode:
    x-definition-type: ISO20022
    description: |
      Specifies the currency of the amount or of the account.
      A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".
    type: string
    pattern: "^[A-Z]{3,3}$"
  AmountType:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      Structure aiming to embed the amount and the currency to be used.
    type: object
    required:
      - amount
      - currency
    properties:
      amount:
        description: |
          ISO20022: Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.
        type: number
        format: float
        pattern: '^\-{0,1}[0-9]{1,13}(\.[0-9]{0,5}){0,1}$'
      currency:
        $ref: "#/definitions/CurrencyCode"
    example: |-
      {
        "amount" : 123.45,
        "currency" : "EUR"
      }
  EquivalentAmountType:
    x-definition-type: ISO20022
    description: |
      Amount of money to be moved between debtor and creditor, before deduction of charges, expressed in the currency of the debtor's account, and to be moved in a different currency.
      Usage: The first agent will convert the equivalent amount into the amount to be moved.
    type: object
    required:
      - amount
      - currency
      - currencyOfTransfer
    properties:
      amount:
        description: |
          ISO20022: Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.
        type: number
        format: float
        pattern: '^\-{0,1}[0-9]{1,13}(\.[0-9]{0,5}){0,1}$'
      currency:
        $ref: "#/definitions/CurrencyCode"
      currencyOfTransfer:
        $ref: "#/definitions/CurrencyCode"
    example: |-
      {
        "amount" : 140.45,
        "currency" : "EUR",
        "currencyOfTransfer" : "USD"
      }
  ClearingSystemMemberIdentification:
    x-definition-type: ISO20022
    description: |
      ISO20022: Information used to identify a member within a clearing system.
      API: to be used for some specific international credit transfers in order to identify the beneficiary bank
    type: object
    required:
      - clearingSystemId
      - memberId
    properties:
      clearingSystemId:
        description: |
          ISO20022: Specification of a pre-agreed offering between clearing agents or the channel through which the payment instruction is processed.
        type: string
        maxLength: 35
      memberId:
        description: |
          ISO20022: Identification of a member of a clearing system.
        type: string
        maxLength: 35
    example: |-
      {
        "clearingSystemId" : "NZNCC",
        "memberId" : "020368"
      }
  FinancialInstitutionIdentification:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised or proprietary identification scheme.
    type: object
    required:
      - bicFi
    properties:
      bicFi:
        description: |
          ISO20022: Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identification code (BIC)".
        type: string
        pattern: "^[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}$"
      clearingSystemMemberId:
        $ref: "#/definitions/ClearingSystemMemberIdentification"
      lei:
        $ref: "#/definitions/LeiIdentification"
      name:
        description: Name of the financial institution
        type: string
        maxLength: 140
      postalAddress:
        $ref: "#/definitions/PostalAddress"
    example: |-
      {
        "bicFi" : "BNKAFRPPXXX"
      }
  PostalAddress:
    x-definition-type: ISO20022
    description: |
      ISO20022: Information that locates and identifies a specific address, as defined by postal services.
    type: object
    required:
      - country
    properties:
      addressType:
        description: |
          ISO20022: Identifies the nature of the postal address.
          API: Cannot be used for SEPA payments. Proprietary codes can be specified and documented if needed.
          | Code | Name | Description |
          | ---- | ---- | ----------- |
          | BIZZ | Business | Address is the business address |
          | DLVY | Delivery | Address is the address to which delivery is to take place |
          | MLTO | Mail To | Address is the  address to which mail is sent |
          | PBOX | PO Box | Address is is a postal office (PO) box |
          | ADDR | Postal | Address is the complete postal address |
          | HOME | Home | Address is the home address |
        type: string
        enum:
          - BIZZ
          - DLVY
          - MLTO
          - PBOX
          - ADDR
          - HOME
      department:
        description: |
          ISO20022: Identification of a division of a large organisation or building.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 70
      subDepartment:
        description: |
          ISO20022: Identification of a sub-division of a large organisation or building.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 70
      streetName:
        description: |
          ISO20022: Name of a street or thoroughfare.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 70
      buildingNumber:
        description: |
          ISO20022: Number that identifies the position of a building on a street.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 16
      buildingName:
        description: |
          ISO20022: Name of the building or house.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 16
      postCode:
        description: |
          ISO20022: Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 16
      townName:
        description: |
          ISO20022: Name of a built-up area, with defined boundaries, and a local government.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 35
      countrySubDivision:
        description: |
          ISO20022: Identifies a subdivision of a country such as state, region, county.
          API: Cannot be used for SEPA payments.
        type: string
        maxLength: 35
      country:
        description: |
          ISO20022: Country in which a person resides (the place of a person's home). In the case of a company, it is the country from which the affairs of that company are directed.
        type: string
        pattern: "^([A-Z]{2,2})$"
      addressLine:
        description: |
          Unstructured address. The lines must embed zip code and town name.
          For SEPA payments, only two address lines are allowed.
        type: array
        minItems: 1
        maxItems: 7
        items:
          description: Address line
          type: string
          maxLength: 70
    example: |-
      {
        "country" : "FR",
        "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
      }
  PhoneNumber:
    x-definition-type: ISO20022
    description: |
      The collection of information which identifies a specific phone or FAX number as defined by telecom services.
      It consists of a "+" followed by the country code (from 1 to 3 characters) then a "-" and finally, any combination of numbers, "(", ")", "+" and "-" (up to 30 characters).
    type: string
    pattern: '^\+[0-9]{1,3}-[0-9()+\-]{1,30}$'
  ContactDetails:
    x-definition-type: ISO20022
    description: |
      Indicates how to contact the party.
    type: object
    properties:
      phoneNumber:
        $ref: "#/definitions/PhoneNumber"
      faxNumber:
        $ref: "#/definitions/PhoneNumber"
      emailAddress:
        description: email address of the contact
        type: string
        maxLength: 2048
        pattern: "^.+@.+$"
    example: |-
      {
        "emailAddress" : "John.doe@john-doe.com"
      }
  DateAndPlaceOfBirth:
    x-definition-type: ISO20022
    description: |
      Date and place of birth of a person.
      This information must be requested for detection of Fraud, Money-Laundering and Terrorism Financing in case of international payment.
    type: object
    required:
      - birthDate
      - cityOfBirth
      - countryOfBirth
    properties:
      birthDate:
        description: Date on which a person is born.
        type: string
        format: date
      cityOfBirth:
        description: City where a person was born.
        type: string
        maxLength: 35
      countryOfBirth:
        description: Country where a person was born.
        type: string
        pattern: "^[A-Z]{2,2}$"
    example: |-
      {
        "birthDate" : "1985-02-19",
        "cityOfBirth" : "Paris",
        "countryOfBirth" : "FR"
      }
  LeiIdentification:
    x-definition-type: ISO20022
    description: |
      Legal Entity Identifier is a code allocated to a party as described in ISO 17442 "Financial Services - Legal Entity Identifier (LEI)".
    type: string
    pattern: "^[A-Z0-9]{18,18}[0-9]{2,2}$"
  PartyIdentification:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      API : Description of a Party which can be either a person or an organization.
    type: object
    required:
      - name
    properties:
      name:
        description: |
          ISO20022: Name by which a party is known and which is usually used to identify that party.
          The [organisationId] property allows the specification of an unique and unambiguous way to identify an organisation.
          The [privateId] property allows the specification of an unique and unambiguous way to identify a person.
        type: string
        maxLength: 140
      dateAndPlaceOfBirth:
        $ref: "#/definitions/DateAndPlaceOfBirth"
      postalAddress:
        $ref: "#/definitions/PostalAddress"
      contactDetails:
        $ref: "#/definitions/ContactDetails"
      organisationId:
        $ref: "#/definitions/GenericIdentification"
      privateId:
        $ref: "#/definitions/GenericIdentification"
      lei:
        $ref: "#/definitions/LeiIdentification"
    example: |-
      {
        "name" : "MyPreferredPisp",
        "postalAddress" : {
          "country" : "FR",
          "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
        },
        "organisationId" : {
          "identification" : "12FR5",
          "schemeName" : "COID",
          "issuer" : "ACPR"
        }
      }
  ResourceId:
    x-definition-type: Resources
    description: |
      API: Identifier assigned by the ASPSP for further use of the created resource through API calls.
      The API client cannot set or modify the value of this field.
      Since this value can be exchanged between the server and the client as an URL element or for support information, it must not contain sensitive value such as personal or business data.
      However it is the duty of each ASPSP to perform its own risk analysis on this topic.
    type: string
    pattern: '^([a-zA-Z0-9_ /\-?:\()\.,'']{1,100})$'
    readOnly: true
  EndToEndId:
    description: |
      ISO20022: Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain.
    type: string
    pattern: '^([a-zA-Z0-9 /\-?:\()\.,'']{1,36})$'
  PaymentIdentification:
    x-definition-type: ISO20022
    description: |
      ISO20022: Set of elements used to reference a payment instruction.
    type: object
    required:
      - instructionId
    properties:
      instructionId:
        description: |
          ISO20022: Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction.

          API: Unique identification shared between the PISP and the ASPSP
        type: string
        pattern: '^([a-zA-Z0-9 /\-?:\()\.,'']{1,36})$'
      endToEndId:
        $ref: "#/definitions/EndToEndId"
      uetr:
        description: |
          ISO20022: Universally unique identifier to provide an end-to-end reference of a payment transaction.
        type: string
        pattern: "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"
    example: |-
      {
        "resourceId" : "MyInstrRscId1",
        "instructionId" : "MyInstrId1",
        "endToEndId" : "MyEndToEndId1"
      }
  PriorityCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: Indicator of the urgency or order of importance that the instructing party would like the instructed party to apply to the processing of the instruction.
      API: This field is useless for SCTInst and thus should be ignored.
    type: string
    enum:
      - HIGH
      - NORM
  CategoryPurposeCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: Specifies the high level purpose of the instruction based on a set of pre-defined categories. This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain.
      API: The following values are allowed:
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | CASH | CashManagementTransfer | Transaction is a general cash management instruction. |
      | CORT | TradeSettlementPayment | Transaction is related to settlement of a trade, e.g. a foreign exchange deal or a securities transaction. |
      | DVPM | DeliverAgainstPayment | Code used to pre-advise the account servicer of a forthcoming deliver against payment instruction. |
      | INTC | IntraCompanyPayment | Transaction is an intra-company payment, i.e. a payment between two companies belonging to the same group. |
      | SALA | SalaryPayment | Transaction is the payment of salaries. |
      | TREA | TreasuryPayment | Transaction is related to treasury operations.  E.g. financial contract settlement. |
    type: string
    enum:
      - CASH
      - CORT
      - DVPM
      - INTC
      - TREA
      - SALA
  ServiceLevelCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: Agreement under which or rules under which the transaction should be processed. Specifies a pre-agreed service or level of service between the parties, as published in an external service level code list.
      API: Only "SEPA" (SEPA Credit Transfer) value is allowed
    type: string
    enum:
      - SEPA
  LocalInstrumentCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: User community specific instrument.
      Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or service level.
      API: "INST" value is to be used in order to ask for an SEPA instant Payment (SCTInst).
      For International payments, this field may be valued with one of the ISO20022 external code to specify which payment instrument should be used by the creditor's bank.
    type: string
  PaymentTypeInformation:
    x-definition-type: ISO20022
    description: |
      ISO20022: Set of elements used to further specify the type of transaction.
    type: object
    properties:
      instructionPriority:
        $ref: "#/definitions/PriorityCode"
      serviceLevel:
        $ref: "#/definitions/ServiceLevelCode"
      localInstrument:
        $ref: "#/definitions/LocalInstrumentCode"
      categoryPurpose:
        $ref: "#/definitions/CategoryPurposeCode"
    example: |-
      {
        "serviceLevel" : "SEPA",
        "localInstrument" : "INST",
        "categoryPurpose" : "CASH"
      }
  PurposeCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: Underlying reason for the payment transaction, as published in an external purpose code list.
      API: The following values are allowed for Payment  Request
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | ACCT | AccountManagement | Funds moved between 2 accounts of same account holder at the same bank) |
      | CASH | CashManagementTransfer | (general cash management instruction) may be used for Transfer Initiation |
      | COMC | CommercialPayment | Transaction is related to a payment of commercial credit or debit. |
      | CPKC | CarparkCharges | General Carpark Charges Transaction is related to carpark charges. |
      | SALA | SalaryPayment | Transaction is the payment of salaries. |
      | TRPT | RoadPricing | Transport RoadPricing Transaction is for the payment to top-up pre-paid card and electronic road pricing for the purpose of transportation. |
    type: string
    enum:
      - ACCT
      - CASH
      - COMC
      - CPKC
      - TRPT
      - SALA
  ChargeBearerCode:
    x-definition-type: ISO20022
    description: |
      ISO20022: Specifies which party/parties will bear the charges associated with the processing of the payment transaction.
      The following values are allowed:
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | DEBT | BorneByDebtor | All transaction charges are to be borne by the debtor. |
      | CRED | BorneByCreditor | All transaction charges are to be borne by the creditor. |
      | SHAR | Shared | In a credit transfer context, means that transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor. In a direct debit context, means that transaction charges on the sender side are to be borne by the creditor, transaction charges on the receiver side are to be borne by the debtor. |
      | SLEV | FollowingServiceLevel | Charges are to be applied following the rules agreed in the service level and/or scheme. |
    type: string
    enum:
      - DEBT
      - CRED
      - SHAR
      - SLEV
  CodeAndIssuer:
    x-definition-type: ISO20022
    description: |
      Specifies a code and the issuer of this code.
    type: object
    required:
      - code
    properties:
      code:
        description: Provides the code.
        type: string
        maxLength: 4
      issuer:
        description: Identification of the issuer of the code.
        type: string
        maxLength: 35
    example: |-
      {
        "code" : "CD01",
        "issuer" : "MyIssuer"
      }
  DocumentLineIdentification:
    x-definition-type: ISO20022
    description: |
      Provides identification of the document line.
      the [type] property must be used for specifying the type of referred document type.
    type: object
    properties:
      type:
        $ref: "#/definitions/CodeAndIssuer"
      number:
        description: Unique and unambiguous identification of the referred document line.
        type: string
        maxLength: 35
      relatedDate:
        description: Date associated with the referred document line.
        type: string
        format: date
    example: |-
      {
        "type" : {
          "code" : "CD01",
          "issuer" : "MyIssuer"
        },
        "number" : "1",
        "relatedDate" : "2020-02-09"
      }
  TypedAmount:
    x-definition-type: ISO20022
    description: |
      ISO20022: Typed Amount
      API: Amounts must always be set as positive values.
    type: object
    required:
      - amount
    properties:
      type:
        description: Type of the amount
        type: string
        maxLength: 35
      amount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "type" : "CHRG",
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        }
      }
  DocumentAdjustment:
    x-definition-type: ISO20022
    description: |
      ISO20022: Specifies detailed information on the amount and reason of the adjustment.
      API: Amounts must always be set as positive values.
    type: object
    required:
      - amount
    properties:
      amount:
        $ref: "#/definitions/AmountType"
      creditDebitIndicator:
        $ref: "#/definitions/CreditDebitIndicator"
      reason:
        description: Specifies the reason for the adjustment.
        type: string
        maxLength: 4
      additionalInformation:
        description: Provides further details on the document adjustment.
        type: string
        maxLength: 140
    example: |-
      {
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        },
        "creditDebitIndicator" : "CRDT",
        "reason" : "RFND",
        "additionalInformation" : "Some comment"
      }
  RemittanceAmount:
    x-definition-type: ISO20022
    description: |
      ISO20022: Provides details on the amounts of the document line.
      API: Amounts must always be set as positive values.
      | Property | Description |
      | -------- | ----------- |
      | duePayableAmount | Amount specified is the exact amount due and payable to the creditor. |
      | discountAppliedAmount | Amount of discount to be applied to the amount due and payable to the creditor. |
      | creditNoteAmount | Amount of a credit note. |
      | taxAmount | Amount of the tax. |
      | adjustmentAmountAndReason | Specifies detailed information on the amount and reason of the adjustment. |
      | remittedAmount | Amount of money remitted. |
    type: object
    properties:
      duePayableAmount:
        $ref: "#/definitions/AmountType"
      discountAppliedAmount:
        $ref: "#/definitions/TypedAmount"
      creditNoteAmount:
        $ref: "#/definitions/AmountType"
      taxAmount:
        $ref: "#/definitions/TypedAmount"
      adjustmentAmountAndReason:
        $ref: "#/definitions/DocumentAdjustment"
      remittedAmount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "remittedAmount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        }
      }
  LineDetail:
    x-definition-type: ISO20022
    description: Set of elements used to provide the content of the referred document line.
    type: object
    properties:
      identification:
        $ref: "#/definitions/DocumentLineIdentification"
      description:
        description: Description associated with the document line.
        type: string
        maxLength: 2048
      amount:
        $ref: "#/definitions/RemittanceAmount"
    example: |-
      {
        "identification" : {
          "type" : {
            "code" : "CD01",
            "issuer" : "MyIssuer"
          },
          "number" : "1",
          "relatedDate" : "2020-02-09"
        },
        "description" : "Some comments",
        "amount" : {
          "remittedAmount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          }
        }
      }
  ReferredDocumentInformation:
    x-definition-type: ISO20022
    description: Provides the identification and the content of the referred document.
    type: object
    properties:
      type:
        $ref: "#/definitions/CodeAndIssuer"
      number:
        description: Unique and unambiguous identification of the referred document.
        type: string
        maxLength: 35
      relatedDate:
        description: Date associated with the referred document.
        type: string
        format: date
      lineDetails:
        description: Sets of elements used to provide the content of the referred document line.
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/LineDetail"
    example: |-
      {
        "type" : {
          "code" : "CD01",
          "issuer" : "MyIssuer"
        },
        "number" : "1",
        "relatedDate" : "2020-02-19",
        "lineDetails" : [ {
          "amount" : {
            "remittedAmount" : {
              "amount" : 123.45,
              "currency" : "EUR"
            }
          }
        } ]
      }
  ReferredDocumentInformations:
    x-definition-type: ISO20022
    description: |
      Provides the identification and the content of the referred documents.
    type: array
    minItems: 1
    items:
      $ref: "#/definitions/ReferredDocumentInformation"
  CreditorReferenceInformation:
    x-definition-type: ISO20022
    description: Reference information provided by the creditor to allow the identification of the underlying documents.
    type: object
    properties:
      type:
        $ref: "#/definitions/CodeAndIssuer"
      reference:
        description: Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction.
        type: string
        maxLength: 35
    example: |-
      {
        "type" : {
          "code" : "CD01",
          "issuer" : "MyIssuer"
        },
        "reference" : "CredRef56FH6"
      }
  TitleAndName:
    x-definition-type: ISO20022
    description: Title and Name of the party or the party's authorised reprensentative.
    type: object
    properties:
      title:
        description: Title or position of the party or the party's authorised reprensentative.
        type: string
        maxLength: 35
      name:
        description: Name of the party or the party's authorised reprensentative.
        type: string
        maxLength: 140
    example: |-
      {
        "title" : "M.",
        "name" : "John Doe"
      }
  TaxParty:
    x-definition-type: ISO20022
    description: |
      Set of elements used to identify a party of the transaction to which the tax applies.
      The [authorization] property aims to provide the details of the authorised tax paying party.
    type: object
    properties:
      taxIdentification:
        description: Tax identification number of the party.
        type: string
        maxLength: 35
      registrationIdentification:
        description: Unique identification, as assigned by an organisation, to unambiguously identify a party.
        type: string
        maxLength: 35
      taxType:
        description: Type of tax payer.
        type: string
        maxLength: 35
      authorisation:
        $ref: "#/definitions/TitleAndName"
    example: |-
      {
        "taxIdentification" : "TaxIdHGH5445",
        "registrationIdentification" : "REGId387H",
        "taxType" : "VAT",
        "authorisation" : {
          "title" : "M.",
          "name" : "John Doe"
        }
      }
  TaxRecordPeriodCode:
    x-definition-type: ISO20022
    description: |
      Identification of the period related to the tax payment.
      | Code | Description |
      | ---- | ---------- |
      | MM01 | FirstMonth Tax is related to the second month of the period. |
      | MM02 | SecondMonth Tax is related to the first month of the period. |
      | MM03 | ThirdMonth Tax is related to the third month of the  period. |
      | MM04 | FourthMonth Tax is related to the fourth month of the period. |
      | MM05 | FifthMonth Tax is related to the fifth month of the period. |
      | MM06 | SixthMonth Tax is related to the sixth month of the period. |
      | MM07 | SeventhMonth Tax is related to the seventh month of the period. |
      | MM08 | EighthMonth Tax is related to the eighth month of the period. |
      | MM09 | NinthMonth Tax is related to the ninth month of the period. |
      | MM10 | TenthMonth Tax is related to the tenth month of the period. |
      | MM11 | EleventhMonth Tax is related to the eleventh month of the period. |
      | MM12 | TwelfthMonth Tax is related to the twelfth month of the period. |
      | QTR1 | FirstQuarter Tax is related to the first quarter of the period. |
      | QTR2 | SecondQuarter Tax is related to the second quarter of the period. |
      | QTR3 | ThirdQuarter Tax is related to the third quarter of the period. |
      | QTR4 | FourthQuarter Tax is related to the fourth quarter of the period. |
      | HLF1 | FirstHalf Tax is related to the first half of the period. |
      | HLF2 | SecondHalf Tax is related to the second half of the period. |
    type: string
    enum:
      - MM01
      - MM02
      - MM03
      - MM04
      - MM05
      - MM06
      - MM07
      - MM08
      - MM09
      - MM10
      - MM11
      - MM12
      - QTR1
      - QTR2
      - QTR3
      - QTR4
      - HLF1
      - HLF2
  TaxPeriod:
    x-definition-type: ISO20022
    description: |
      Set of elements used to provide details on the period of time related to the tax payment.
      The [type] property aims to identify the period related to the tax payment.
    type: object
    properties:
      year:
        description: Year related to the tax payment.
        type: string
        pattern: "^[0-9]{4,4}$"
      type:
        $ref: "#/definitions/TaxRecordPeriodCode"
      fromDate:
        description: Start date of the range.
        type: string
        format: date
      toDate:
        description: End date of the range.
        type: string
        format: date
    example: |-
      {
        "year" : "2020",
        "type" : "QTR4",
        "fromDate" : "2019-10-01",
        "toDate" : "2020-01-01"
      }
  PercentageRate:
    x-definition-type: ISO20022
    description: Rate expressed as a percentage, ie, in hundredths, eg, 0.7 is 7/10 of a percent, and 7.0 is 7%.
    type: number
    format: float
  TaxRecordDetails:
    x-definition-type: ISO20022
    description: |
      ISO20022: Elements used to provide details on the tax period and amount.
      API: Amounts must always be set as positive values.
      | Property | Description |
      | -------- | ----------- |
      | period | Set of elements used to provide details on the period of time related to the tax payment. |
      | amount | Underlying tax amount related to the specified period. |
    type: object
    required:
      - amount
    properties:
      period:
        $ref: "#/definitions/TaxPeriod"
      amount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "period" : {
          "year" : "2020",
          "type" : "QTR4",
          "fromDate" : "2019-10-01",
          "toDate" : "2020-01-01"
        },
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        }
      }
  TaxAmount:
    x-definition-type: ISO20022
    description: |
      ISO20022: Set of elements used to provide information on the amount of the tax record.
      API: Amounts must always be set as positive values.
      | Property | Description |
      | -------- | ----------- |
      | rate | Rate used to calculate the tax. |
      | taxableBaseAmount | Amount of money on which the tax is based. |
      | totalAmount | Total amount that is the result of the calculation of the tax for the record. |
      | details | Set of elements used to provide details on the tax period and amount. |
    type: object
    properties:
      rate:
        $ref: "#/definitions/PercentageRate"
      taxableBaseAmount:
        $ref: "#/definitions/AmountType"
      totalAmount:
        $ref: "#/definitions/AmountType"
      details:
        description: Set of elements used to provide details on the tax period and amount.
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/TaxRecordDetails"
    example: |-
      {
        "details" : [ {
          "period" : {
            "year" : "2020",
            "type" : "QTR4",
            "fromDate" : "2019-10-01",
            "toDate" : "2020-01-01"
          },
          "amount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          }
        } ]
      }
  TaxRecord:
    x-definition-type: ISO20022
    description: |
      Record of tax details
      the [period] property embbeds the set of elements used to provide details on the period of time related to the tax payment.
      the [amount] property embbeds the set of elements used to provide information on the amount of the tax record.
    type: object
    properties:
      type:
        description: High level code to identify the type of tax details.
        type: string
        maxLength: 35
      category:
        description: Specifies the tax code as published by the tax authority.
        type: string
        maxLength: 35
      categoryDetails:
        description: Provides further details of the category tax code.
        type: string
        maxLength: 35
      debtorStatus:
        description: Code provided by local authority to identify the status of the party that has drawn up the settlement document.
        type: string
        maxLength: 35
      certificateIdentification:
        description: Identification number of the tax report as assigned by the taxing authority.
        type: string
        maxLength: 35
      formsCode:
        description: Identifies, in a coded form, on which template the tax report is to be provided.
        type: string
        maxLength: 35
      period:
        $ref: "#/definitions/TaxPeriod"
      taxAmount:
        $ref: "#/definitions/TaxAmount"
      additionalInformation:
        description: Further details of the tax record.
        type: string
        maxLength: 140
    example: |-
      {
        "type" : "NationalTax",
        "category" : "VAT",
        "categoryDetails" : "VAT02",
        "debtorStatus" : "Valid",
        "certificateIdentification" : "CertId56RD",
        "formsCode" : "FormHJH7",
        "period" : {
          "year" : "2020",
          "type" : "QTR4",
          "fromDate" : "2019-10-01",
          "toDate" : "2020-01-01"
        },
        "taxAmount" : {
          "details" : [ {
            "period" : {
              "year" : "2020",
              "type" : "QTR4",
              "fromDate" : "2019-10-01",
              "toDate" : "2020-01-01"
            },
            "amount" : {
              "amount" : 123.45,
              "currency" : "EUR"
            }
          } ]
        },
        "additionalInformation" : "Some comment"
      }
  TaxInformation:
    x-definition-type: ISO20022
    description: |
      ISO20022: Details about tax paid, or to be paid, to the government in accordance with the law, including pre-defined parameters such as thresholds and type of account.
      API: Amounts must always be set as positive values.
      The [totalTaxableBaseAmount] property indicates the total amount of money on which the tax is based.
      The [totalTaxAmount] property indicates the total amount of money as result of the calculation of the tax.
    type: object
    properties:
      creditor:
        $ref: "#/definitions/TaxParty"
      debtor:
        $ref: "#/definitions/TaxParty"
      ultimateDebtor:
        $ref: "#/definitions/TaxParty"
      administrationZone:
        description: Territorial part of a country to which the tax payment is related.
        type: string
        maxLength: 35
      referenceNumber:
        description: Tax reference information that is specific to a taxing agency.
        type: string
        maxLength: 140
      method:
        description: Method used to indicate the underlying business or how the tax is paid.
        type: string
        maxLength: 35
      totalTaxableBaseAmount:
        $ref: "#/definitions/AmountType"
      totalTaxAmount:
        $ref: "#/definitions/AmountType"
      date:
        description: Date by which tax is due.
        type: string
        format: date
      sequenceNumber:
        description: Sequential number of the tax report.
        type: integer
        format: int32
      record:
        description: Records of tax details
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/TaxRecord"
    example: |-
      {
        "creditor" : {
          "taxIdentification" : "TaxIdHGH5445",
          "registrationIdentification" : "REGId387H",
          "taxType" : "VAT",
          "authorisation" : {
            "title" : "M.",
            "name" : "John Doe"
          }
        },
        "debtor" : {
          "taxIdentification" : "TaxIdHGH5445",
          "registrationIdentification" : "REGId387H",
          "taxType" : "VAT",
          "authorisation" : {
            "title" : "M.",
            "name" : "John Doe"
          }
        },
        "administrationZone" : "FR",
        "method" : "CT",
        "date" : "2020-02-19",
        "record" : [ {
          "type" : "NationalTax",
          "category" : "VAT",
          "categoryDetails" : "VAT02",
          "debtorStatus" : "Valid",
          "certificateIdentification" : "CertId56RD",
          "formsCode" : "FormHJH7",
          "period" : {
            "year" : "2020",
            "type" : "QTR4",
            "fromDate" : "2019-10-01",
            "toDate" : "2020-01-01"
          },
          "taxAmount" : {
            "details" : [ {
              "period" : {
                "year" : "2020",
                "type" : "QTR4",
                "fromDate" : "2019-10-01",
                "toDate" : "2020-01-01"
              },
              "amount" : {
                "amount" : 123.45,
                "currency" : "EUR"
              }
            } ]
          },
          "additionalInformation" : "Some comment"
        } ]
      }
  StructuredRemittanceInformation:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in a structured form.
    type: object
    properties:
      referredDocumentInformation:
        $ref: "#/definitions/ReferredDocumentInformations"
      referredDocumentAmount:
        $ref: "#/definitions/RemittanceAmount"
      creditorReferenceInformation:
        $ref: "#/definitions/CreditorReferenceInformation"
      invoicer:
        $ref: "#/definitions/PartyIdentification"
      invoicee:
        $ref: "#/definitions/PartyIdentification"
      taxRemittance:
        $ref: "#/definitions/TaxInformation"
    example: |-
      {
        "referredDocumentInformation" : [ {
          "type" : {
            "code" : "CD01",
            "issuer" : "MyIssuer"
          },
          "number" : "1",
          "relatedDate" : "2020-02-19",
          "lineDetails" : [ {
            "amount" : {
              "remittedAmount" : {
                "amount" : 123.45,
                "currency" : "EUR"
              }
            }
          } ]
        } ],
        "referredDocumentAmount" : {
          "remittedAmount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          }
        },
        "creditorReferenceInformation" : {
          "type" : {
            "code" : "CD01",
            "issuer" : "MyIssuer"
          },
          "reference" : "CredRef56FH6"
        },
        "invoicee" : {
          "name" : "MyPreferredPisp",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "12FR5",
            "schemeName" : "COID",
            "issuer" : "ACPR"
          }
        },
        "taxRemittance" : {
          "creditor" : {
            "taxIdentification" : "TaxIdHGH5445",
            "registrationIdentification" : "REGId387H",
            "taxType" : "VAT",
            "authorisation" : {
              "title" : "M.",
              "name" : "John Doe"
            }
          },
          "debtor" : {
            "taxIdentification" : "TaxIdHGH5445",
            "registrationIdentification" : "REGId387H",
            "taxType" : "VAT",
            "authorisation" : {
              "title" : "M.",
              "name" : "John Doe"
            }
          },
          "administrationZone" : "FR",
          "method" : "CT",
          "date" : "2020-02-19",
          "record" : [ {
            "type" : "NationalTax",
            "category" : "VAT",
            "categoryDetails" : "VAT02",
            "debtorStatus" : "Valid",
            "certificateIdentification" : "CertId56RD",
            "formsCode" : "FormHJH7",
            "period" : {
              "year" : "2020",
              "type" : "QTR4",
              "fromDate" : "2019-10-01",
              "toDate" : "2020-01-01"
            },
            "taxAmount" : {
              "details" : [ {
                "period" : {
                  "year" : "2020",
                  "type" : "QTR4",
                  "fromDate" : "2019-10-01",
                  "toDate" : "2020-01-01"
                },
                "amount" : {
                  "amount" : 123.45,
                  "currency" : "EUR"
                }
              } ]
            },
            "additionalInformation" : "Some comment"
          } ]
        }
      }
  RemittanceInformation:
    x-definition-type: ISO20022
    description: |
      ISO20022: Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.
      API:
      - Only one occurrence of the unstructured information is allowed.
      - Only one occurrence of the structured information is allowed.
      - Structured and unstructured information can coexist.
    type: object
    properties:
      unstructured:
        description: |
          Unstructured remittance information.
          Each implementation may add a pattern in order to specify its own character set constraints.
        type: array
        minItems: 1
        items:
          title: remittanceLine
          description: Relevant information to the transaction
          type: string
          maxLength: 140
      structured:
        description: Structured remittance information
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/StructuredRemittanceInformation"
    example: |-
      {
        "unstructured" : [ "MyRemittanceInformation" ]
      }
  PaymentInformationStatusCode:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Specifies the status of the payment information.
      API: Mandatory. The following values are allowed to provide the status of the Payment Request
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | ACCO | AcceptedCustomerCOnfirmed | The customer, during his/her authentication, has confirmed the payment request. |
      | ACCP | AcceptedCustomerProfile | Preceding check of technical validation was successful. Customer profile check was also successful. |
      | ACSC | AcceptedSettlementCompleted | Settlement on the debtor's account was completed. In the case of SCTInst, this status must not been set by the debtor's Bank before the reception of the positive confirmation. |
      | ACSP | AcceptedSettlementInProcess | All preceding checks such as technical validation and customer profile were successful. Dynamic risk assessment is now also successful and therefore the Payment Request was 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. |
      | CANC | Cancelled | Payment initiation was successfully cancelled after having received a request for cancellation. |
      | PART | PartiallyAccepted | A number of transactions were accepted, whereas another number of transactions have not yet achieved 'accepted' status. |
      | PATC | PartiallyAcceptedTechnicalCorrect | Payment initiation needs multiple authentications, where some but not yet all were performed. Syntactical and semantical validations are successful. |
      | RCVD | Received | Payment initiation was received by the receiving agent. |
      | PDNG | Pending | Payment request or individual transaction included in the Payment Request is pending. Further checks and status update will be performed. |
      | RJCT | Rejected | Payment request  was rejected. |
      ![](https://www.stet.eu//assets/files/documents-api/payment-request-status-1-4-2.png)
    type: string
    enum:
      - ACCP
      - ACSC
      - ACSP
      - ACTC
      - ACWC
      - ACWP
      - CANC
      - PART
      - RCVD
      - PDNG
      - RJCT
      - ACCO
  TransactionIndividualStatusCode:
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Specifies the status of the payment information group.

      API: Only the following values are allowed to provide the status of the subsequent CREDIT TRANSFER to the Payment Request
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | ACSC | AcceptedSettlementCompleted | Settlement on the debtor's account was completed. In the case of SCTInst, this status must not been set by the debtor's Bank before the reception of the positive confirmation. The transaction cannot be cancelled. |
      | ACSP | AcceptedSettlementInProcess | All preceding checks such as technical validation and customer profile were successful and therefore the Payment Request was accepted for execution. The transaction cannot be cancelled. |
      | ACTC | AcceptedTechnicalValidation | Authentication and syntactical and semantical validation are successful. The transaction might be cancelled. |
      | CANC | Cancelled | Payment initiation was successfully cancelled after having received a request for cancellation. |
      | PDNG | Pending | Payment request or individual transaction included in the Payment Request is pending. Further checks and status update will be performed. The transaction might be cancelled. |
      | RJCT | Rejected | Payment request or individual transaction included in the Payment Request was rejected. |
      ![](https://www.stet.eu//assets/files/documents-api/transaction-status-1-4-2.png)
    type: string
    enum:
      - ACSC
      - ACSP
      - ACTC
      - CANC
      - PDNG
      - RJCT
  StatusReasonInformation:
    x-comments:
      - Modified for CR523 (Add a reason for insufficient funds)
      - Modified for CR522 (Add a reason code in order to explain that the transaction amount  is over the maximal allowed amount)
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Provides detailed information on the status reason.

      API: Can only be used in case the status is equal to "RJCT" or "CANC". Only the following values are allowed:
      | Code | Name | Description |
      | ---- | ---- | ---------- |
      | AC01 | IncorectAccountNumber | the account number is either invalid or does not exist |
      | AC04 | ClosedAccountNumber | the account is closed and cannot be used |
      | AC06 | BlockedAccount | the account is blocked and cannot be used |
      | AG01 | TransactionForbidden | Transaction forbidden on this type of account |
      | AG03 | TransactionNotSupported | Transaction type not supported/authorized on this account |
      | AM02 | NotAllowedAccount | SPecific transaction/message amount is greater than allowed maximum |
      | AM04 | InsufficientFunds | Amount of funds available to cover specified message amount is insufficient |
      | AM18 | InvalidNumberOfTransactions | the number of transactions exceeds the ASPSP acceptance limit |
      | CH03 | RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture | The requested execution date is too far in the future |
      | CH04 | RequestedExecutionDateOrRequestedCollectionDateTooFarInPast | Value in Requested Execution Date or Requested Collection Date is too far in the past |
      | CNOR | CreditorBankIsNotRegistered | Creditor bank is not registered under this BIC in the CSM |
      | CUST | RequestedByCustomer | The reject is due to the debtor: refusal or lack of liquidity |
      | DS02 | OrderCancelled | An authorized user has cancelled the order |
      | DUPL | DuplicatePayment | Payment is a duplicate of another payment. Can only be set by a PISP for a payment request cancellation. |
      | FF01 | InvalidFileFormat | The reject is due to the original Payment Request which is invalid (syntax, structure or values) |
      | FRAD | FraudulentOriginated | the Payment Request is considered as fraudulent |
      | MS03 | NotSpecifiedReasonAgentGenerated | No reason specified by the ASPSP |
      | NOAS | NoAnswerFromCustomer | The PSU has neither accepted nor rejected the Payment Request and a time-out has occurred |
      | RR01 | MissingDebtorAccountOrIdentification | The Debtor account and/or Identification are missing or inconsistent |
      | RR03 | MissingCreditorNameOrAddress | Specification of the creditor's name and/or address needed for regulatory requirements is insufficient or missing. |
      | RR04 | RegulatoryReason | Reject from regulatory reason |
      | RR12 | InvalidPartyID | Invalid or missing identification required within a particular country or payment type. |
      | TECH | TechnicalProblem | Technical problems resulting in an erroneous transaction. Can only be set by a PISP for a payment request cancellation. |
    type: string
    enum:
      - AC01
      - AC04
      - AC06
      - AG01
      - AG03
      - AM18
      - CH03
      - CUST
      - DS02
      - DUPL
      - FF01
      - FRAD
      - MS03
      - NOAS
      - RR01
      - RR03
      - RR04
      - RR12
      - CNOR
      - CH04
      - AM04
      - AM02
  RegulatoryReportingCode:
    x-definition-type: ISO20022
    description: |
      Information needed due to regulatory and statutory requirements.
      Economical codes to be used are provided by the National Competent Authority
    type: string
    maxLength: 10
  RegulatoryReportingCodes:
    x-definition-type: ISO20022
    description: |
      List of needed regulatory reporting codes for international payments
    type: array
    minItems: 1
    maxItems: 10
    items:
      $ref: "#/definitions/RegulatoryReportingCode"
  RequestedExecutionDate:
    x-definition-type: ISO20022
    description: |
      ISO20022: Date at which the initiating party requests the clearing agent to process the payment.
      API:
      When set by the PISP, this field indicates the future date at which the payment instruction should be executed and the debtor account should be debited.
      if this field is not set by the PISP, the ASPSP is requested to execute the payment instruction as soon as possible.
      In most of the cases, especially for international payments, the date of the credit on the credit account cannot be set. Only SCTInst can guarantee having the same date for this credit.
      When the payment cannot be processed at the requested date, the ASPSP is allowed to shift the applied execution date to the next possible execution date for non-standing orders.
      For standing orders, this field is useless since the [startDate] parameter already provides the needed information for the first payment instruction to be executed.
    type: string
    format: date-time
  StartDate:
    x-definition-type: ISO20022
    description: |
      The first applicable day of execution for a given period.
    type: string
    format: date-time
  EndDate:
    x-definition-type: ISO20022
    description: |
      The last applicable day of execution for a given period.
      If not given, the period is considered as endless.
    type: string
    format: date-time
  ExecutionRule:
    x-definition-type: ISO20022
    description: |
      Execution date shifting rule for standing orders
      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.
      | Code | Description |
      | ---- | ----------- |
      | FWNG | following |
      | PREC | preceding |
    type: string
    enum:
      - FWNG
      - PREC
  FrequencyCode:
    x-definition-type: ISO20022
    description: |
      Frequency rule for standing orders.
      The following codes from the "EventFrequency7Code" of ISO 20022 are supported.
      | Code | Description |
      | ---- | ----------- |
      | DAIL | Daily |
      | WEEK | Weekly |
      | TOWK | EveryTwoWeeks |
      | MNTH | Monthly |
      | TOMN | EveryTwoMonths |
      | QUTR | Quarterly |
      | SEMI | SemiAnnual |
      | YEAR | Annual |
      However, each ASPSP might restrict these values into a subset if needed.
    type: string
    enum:
      - DAIL
      - WEEK
      - TOWK
      - MNTH
      - TOMN
      - QUTR
      - SEMI
      - YEAR
  ExchangeRate:
    x-definition-type: ISO20022
    description: |
      ISO20022: Provides details on the currency exchange rate and contract.
      The [unitCurrency] property specifies the currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP.
      The [estimatedPayerAmount] gives an estimation of the amount that will be debited on the payer's account, including transaction and change fees.
      The [estimatedPayeeAmunt] gives an estimation of the amount that will be credited on the payee's account.
      API: Amounts must always be set as positive values.
    type: object
    required:
      - rateType
    properties:
      unitCurrency:
        $ref: "#/definitions/CurrencyCode"
      exchangeRate:
        description: |
          The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency.
        type: number
        format: float
      rateType:
        description: |
          Specifies the type used to complete the currency exchange.
          | Code | Name | Description |
          | ---- | ---- | ---------- |
          | SPOT | Spot | Exchange rate applied is the spot rate. |
          | SALE | Sale | Exchange rate applied is the market rate at the time of the sale. |
          | AGRD | Agreed | Exchange rate applied is the rate agreed between the parties. |
        type: string
        enum:
          - SPOT
          - SALE
          - AGRD
      contractIdentification:
        description: Unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent.
        type: string
        maxLength: 35
      estimatedPayerAmount:
        $ref: "#/definitions/AmountType"
      estimatedPayeeAmount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "unitCurrency" : "USD",
        "exchangeRate" : 1.1,
        "rateType" : "AGRD",
        "contractIdentification" : "CTRCT37H8"
      }
  InstructionForCreditorAgent:
    x-definition-type: ISO20022
    description: |
      Further information related to the processing of the payment instruction that may need to be acted upon by the creditor's agent. The instruction may relate to a level of service, or may be an instruction that has to be executed by the creditor's agent, or may be information required by the creditor's agent.
    type: object
    properties:
      code:
        description: |-
          Coded information related to the processing of the payment instruction, provided by the initiating party, and intended for the creditor's agent.
          | Code | Name | Description |
          | ---- | ---- | ---------- |
          | CHQB | PayCreditorByCheque | (Ultimate) creditor must be paid by cheque. |
          | HOLD | HoldCashForCreditor | Amount of money must be held for the (ultimate) creditor, who will call. Pay on identification. |
          | PHOB | PhoneBeneficiary | Please advise/contact (ultimate) creditor/claimant by phone. |
          | TELB | Telecom | Please advise/contact (ultimate) creditor/claimant by the most efficient means of telecommunication. |
        type: string
        enum:
          - CHQB
          - HOLD
          - PHOB
          - TELB
      instructionInformation:
        description: Further information complementing the coded instruction or instruction to the creditor's agent that is bilaterally agreed or specific to a user community.
        type: string
        maxLength: 140
    example: |-
      {
        "code" : "TELB",
        "instructionInformation" : "Please contact M. John Doe"
      }
  IntermediaryAgent:
    x-definition-type: ISO20022
    description: Agent and agent account between the debtor's agent and the creditor's agent.
    type: object
    properties:
      agent:
        $ref: "#/definitions/PartyIdentification"
      agentAccount:
        $ref: "#/definitions/AccountIdentification"
    example: |-
      {
        "agent" : {
          "name" : "MyPreferredPisp",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "12FR5",
            "schemeName" : "COID",
            "issuer" : "ACPR"
          }
        },
        "agentAccount" : {
          "iban" : "YY64COJH41059545330222956960771321",
          "currency" : "EUR"
        }
      }
  StandingOrderCharacteristics:
    x-definition-type: ISO20022
    description: |
      Specifies the characteristics of a standing order.
    type: object
    required:
      - startDate
      - executionRule
      - frequency
    properties:
      startDate:
        $ref: "#/definitions/StartDate"
      endDate:
        $ref: "#/definitions/EndDate"
      executionRule:
        $ref: "#/definitions/ExecutionRule"
      frequency:
        $ref: "#/definitions/FrequencyCode"
    example: |-
      {
        "startDate" : "2020-02-24T00:00Z",
        "executionRule" : "FWNG",
        "frequency" : "MNTH"
      }
  CreditTransferTransactionResource:
    x-comments:
      - Modified for CR496 (Add an investigation status for a payment request)
    x-definition-type: ISO20022
    x-generic: true
    description: |
      ISO20022: Payment processes required to transfer cash from the debtor to the creditor.
      The [instructedAmount] property indicates Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.
        Usage: This amount has to be transported unchanged through the transaction chain.
      API: Amounts must always be set as positive values.
    type: object
    required:
      - paymentId
      - beneficiary
    x-not-allowed-in-post:
      - transactionStatus
      - statusReasonInformation
      - cancellableTill
      - acceptanceDateTime
      - debtorDecisionDate
      - appliedExecutionDate
      - investigationStatus
    properties:
      paymentId:
        $ref: "#/definitions/PaymentIdentification"
      resourceId:
        $ref: "#/definitions/ResourceId"
      requestedExecutionDate:
        $ref: "#/definitions/RequestedExecutionDate"
      cancellableTill:
        description: |
          This field may allow the PISP to get information on the limit timestamp for requesting cancelation of the transaction.
          When this field is not provided by the ASPSP, the PISP must rely on the status of the transaction [transactionStatus] in order to estimate if the transaction is actually cancellable.
        type: string
        format: date-time
      acceptanceDateTime:
        description: |
          ISO20022: Date and time at which all processing conditions for execution of the payment are met and adequate financial cover is available at the account servicing agent.
        type: string
        format: date-time
      debtorDecisionDate:
        description: |
          ISO20022: Date and time on when the debtor has accepted or rejected the request.
        type: string
        format: date-time
      appliedExecutionDate:
        description: |
          ISO20022: Date and time on when the payment was executed.
        type: string
        format: date-time
      standingOrderCharacteristics:
        $ref: "#/definitions/StandingOrderCharacteristics"
      instructedAmount:
        $ref: "#/definitions/AmountType"
      equivalentAmount:
        $ref: "#/definitions/EquivalentAmountType"
      exchangeRateInformation:
        $ref: "#/definitions/ExchangeRate"
      ultimateDebtor:
        $ref: "#/definitions/PartyIdentification"
      intermediaryAgent:
        $ref: "#/definitions/IntermediaryAgent"
      beneficiary:
        $ref: "#/definitions/Beneficiary"
      ultimateCreditor:
        $ref: "#/definitions/PartyIdentification"
      instructionForCreditorAgent:
        description: Further information related to the processing of the payment instruction, provided by the initiating party, and intended for the creditor agent.
        type: array
        items:
          $ref: "#/definitions/InstructionForCreditorAgent"
      purpose:
        $ref: "#/definitions/PurposeCode"
      regulatoryReportingCodes:
        $ref: "#/definitions/RegulatoryReportingCodes"
      remittanceInformation:
        $ref: "#/definitions/RemittanceInformation"
      transactionStatus:
        $ref: "#/definitions/TransactionIndividualStatusCode"
      statusReasonInformation:
        $ref: "#/definitions/StatusReasonInformation"
      supplementaryData:
        $ref: "#/definitions/SupplementaryData"
      investigationStatus:
        x-comments:
          - Added for CR496 (Add an investigation status for a payment request)
        description: |
          Boolean indicator aiming to clarify that the relevant transaction is under dispute investigation.
        type: boolean
    example: |-
      {
        "paymentId" : {
          "instructionId" : "MyInstrId3",
          "endToEndId" : "MyEndToEndId3"
        },
        "requestedExecutionDate" : "2020-02-19T12:56:54.639Z",
        "instructedAmount" : {
          "amount" : 124.35,
          "currency" : "EUR"
        },
        "beneficiary" : {
          "creditor" : {
            "name" : "myMerchant",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "852126789",
              "schemeName" : "SIREN",
              "issuer" : "FR"
            }
          },
          "creditorAccount" : {
            "iban" : "YY64COJH41059545330222956960771321",
            "currency" : "EUR"
          }
        },
        "ultimateCreditor" : {
          "name" : "myPreferredUltimateMerchant",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "85212678900025",
            "schemeName" : "SIRET",
            "issuer" : "FR"
          }
        },
        "purpose" : "CASH",
        "remittanceInformation" : {
          "unstructured" : [ "MyRemittanceInformation" ]
        }
      }
  SupplementaryData:
    x-comments:
      - Modified for CR530 (Providing a LOGIN_HINT_TOKEN in request/response to a payment request submission)
    x-definition-type: ISO20022
    description: |
      ISO20022: Additional information that cannot be captured in the structured elements and/or any other specific block.
      API: This structure is used to embed the relevant URLs for returning the status report to the PISP and to specify which authentication approaches are accepted by the PISP and which was chosen by the ASPSP
      The [acceptedAuthenticationApproach] property can only be set by the PISP.
      - Authentication approaches that are supported by the PISP. The PISP can provide several choices separated by commas.
      - Case of none of the accepted approaches is supported by the ASPSP, the latest will respond with HTTP400 (Bad request) and specify wich approaches are actually supported.
      The [appliedAuthentication] will be set by the ASPSP.
      - The ASPSP, based on the authentication approaches proposed by the PISP, choose the one that it can processed, in respect with the preferences and constraints of the PSU and indicates in this field which approach was chosen.
      - It may happen that the ASPSP considers that, in case of payment cancellation request, there is no need for authentication and will then return "NONE".
    type: object
    properties:
      acceptedAuthenticationApproach:
        $ref: "#/definitions/AuthenticationApproaches"
      appliedAuthenticationApproach:
        readOnly: true
        $ref: "#/definitions/AuthenticationApproach"
      appliedAuthentication:
        description: |
          Can only be set by the ASPSP.
          This field allows the ASPSP to inform the PISP about the way authentication was processed during the payment request confirmation.
        type: string
        enum:
          - noAuthentication
          - oneFactorAuthentication
          - strongAuthentication
      scaHint:
        description: |
          can only be set by the PISP
          Hint given by the merchant and/or the PISP about an SCA exemption context
        type: string
        enum:
          - noScaExemption
          - scaExemption
      successfulReportUrl:
        description: |
          URL to be used by the ASPSP in order to notify the PISP of the finalisation of the authentication and consent process in REDIRECT and DECOUPLED approach
        type: string
      unsuccessfulReportUrl:
        description: |
          URL to be used by the ASPSP in order to notify the PISP of the failure of the authentication and consent process in REDIRECT and DECOUPLED approach
          If this URL is not provided by the PISP, the ASPSP will use the "successfulReportUrl" even in case of failure of the Payment Request processing
        type: string
      nextStatusRequestHint:
        description: |
          Date and time at which the PISP is suggested to ask again for the status of the payment request.
        type: string
        format: date-time
      loginHintToken:
        x-comments:
          - Added for CR530 (Providing a LOGIN_HINT_TOKEN in request/response to a payment request submission)
        description: |
          The LOGIN_HINT_TOKEN is a piece of data that may be provided to the API client by the API server, once a PSU has been identified and authenticated.
          * through a response to a token introspection request (RFC7662)
          * through a status response to a Payment Request
          This LOGIN_HINT_TOKEN can then be sent back by the API client to the API server through the posting of a new Payment request.
          This will help the API server to identify the relevant PSU and ease the authentication process.
        type: string
    example: |-
      {
        "successfulReportUrl" : "http://myPisp/PaymentSuccess",
        "unsuccessfulReportUrl" : "http://myPisp/PaymentFailure"
      }
  BalanceStatus:
    x-definition-type: ISO20022
    description: |
      Type of balance
      | Code | Name | Description |
      | ---- | ---- | ----------- |
      | CLBD | ISO20022 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.  |
      | PRCD | ISO20022 PreviouslyClosedBooked | Balance of the account at the previously closed account reporting period. The opening booked balance for the new period has to be equal to this balance. Usage: the previously booked closing balance should equal (inclusive date) the booked closing balance of the date it references and equal the actual booked opening balance of the current date. |
      | ITAV | ISO20022 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.  |
      | XPCD | ISO20022 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.  |
      | VALU | (None) | Value-date balance |
      | OTHR | (None) | Other Balance |
    type: string
    enum:
      - CLBD
      - XPCD
      - VALU
      - OTHR
      - PRCD
      - ITAV
  TransactionStatus:
    x-definition-type: ISO20022
    description: |
      Type of Transaction
      | Code | Name | Description |
      | ---- | ---- | ----------- |
      | BOOK | ClosingBooked | Accounted transaction |
      | PDNG | Pending | Transaction that is to be accounted and does already affect the instant balance |
      | FUTR | Future | Entry is on the books of the account servicer and value will be applied to the account owner at a future date and time. |
      | INFO | Information | Entry is only provided for information, and no booking on the account owner's account in the account servicer's ledger was performed. |
    type: string
    enum:
      - BOOK
      - PDNG
      - FUTR
      - INFO
  BankTransactionCode:
    x-definition-type: ISO20022
    description: |
      Set of elements used to fully identify the type of underlying transaction resulting in an entry.

      ISO20022 provides a list of [possible Bank Transaction Code combinations](https://www.iso20022.org/external_code_list.page)

      Transaction codification might also be specified at national community level.

      For instance a French Transaction codification is [available](https://www.cfonb.org/fichiers/20190913092943_Brochure_Codes_Operation_pour_restitutions_clienteles_V5_0_novembre_2018.pdf)

      It applies with paragraph  2 code table using the following mapping:
        - domain must be set with "FR"
        - family must be set with one of the values that are provided in the [code Famille] column (e.g. "OPCA")
        - subFamily must be set with one of the values that are provided in the [code operation] column (e.g. "05")
        - code might be set with a proprietary transaction code that must be documented by the implementation.
    type: object
    required:
      - domain
      - family
      - subFamily
    properties:
      domain:
        description: |
          Set of elements used to provide the domain, the family and the sub-family of the bank transaction code, in a structured and hierarchical format.
        type: string
        maxLength: 4
      family:
        description: |
          Specifies the family and the sub-family of the bank transaction code, within a specific domain, in a structured and hierarchical format.
        type: string
        maxLength: 4
      subFamily:
        description: |
          Specifies the sub-product family within a specific family.
        type: string
        maxLength: 4
      code:
        description: |
          Proprietary bank transaction code to identify the underlying transaction.
        type: string
        maxLength: 35
      issuer:
        description: |
          Identification of the issuer of the proprietary bank transaction code.
        type: string
        maxLength: 35
    example: |-
      {
        "domain" : "PMNT",
        "family" : "CCRD",
        "subFamily" : "POSC"
      }
  CreditDebitIndicator:
    x-definition-type: ISO20022
    description: |
      Accounting flow of the amount
      | Code | Description |
      | ---- | ----------- |
      | CRDT | Credit type amount |
      | DBIT | Debit type amount |
    type: string
    enum:
      - CRDT
      - DBIT
  RelatedParties:
    x-definition-type: ISO20022
    description: information about the parties that are related to the transaction
    type: object
    properties:
      initiatingParty:
        $ref: "#/definitions/PartyIdentification"
      debtorAgent:
        $ref: "#/definitions/FinancialInstitutionIdentification"
      debtor:
        $ref: "#/definitions/PartyIdentification"
      debtorAccount:
        $ref: "#/definitions/AccountIdentification"
      ultimateDebtor:
        $ref: "#/definitions/PartyIdentification"
      creditorAgent:
        $ref: "#/definitions/FinancialInstitutionIdentification"
      creditor:
        $ref: "#/definitions/PartyIdentification"
      creditorAccount:
        $ref: "#/definitions/AccountIdentification"
      ultimateCreditor:
        $ref: "#/definitions/PartyIdentification"
    example: |-
      {
        "creditorAgent" : {
          "bicFi" : "BNKAFRPPXXX"
        },
        "creditor" : {
          "name" : "MyPreferredPisp",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "12FR5",
            "schemeName" : "COID",
            "issuer" : "ACPR"
          }
        },
        "creditorAccount" : {
          "iban" : "YY64COJH41059545330222956960771321",
          "currency" : "EUR"
        }
      }
  AmountAndCurrencyExchangeDetails:
    x-definition-type: ISO20022
    description: |
      ISO20022: details on amount and currency exchange
      The [amount] property is the amount of money to be exchanged against another amount of money in the counter currency.
      The [sourceCurency] property indicates the currency from which an amount is to be converted in a currency conversion.
      The [targetCurrency] property indicates the currency into which an amount is to be converted in a currency conversion.
      The [unitCurrency] indicates the currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP.
      API: Amounts must always be set as positive values.
    type: object
    required:
      - amount
      - sourceCurrency
      - exchangeRate
    properties:
      type:
        description: specifies the type of amount in case of proprietary amount
        type: string
        maxLength: 35
      amount:
        $ref: "#/definitions/AmountType"
      sourceCurrency:
        $ref: "#/definitions/CurrencyCode"
      targetCurrency:
        $ref: "#/definitions/CurrencyCode"
      unitCurrency:
        $ref: "#/definitions/CurrencyCode"
      exchangeRate:
        description: |
          Factor used to convert an amount from one currency into another. This reflects the price at which one currency was bought with another currency.
          ExchangeRate expresses the ratio between UnitCurrency and QuotedCurrency (ExchangeRate = UnitCurrency/QuotedCurrency).
        type: number
        format: float
      contractIdentification:
        description: Unique identification to unambiguously identify the foreign exchange contract.
        type: string
        maxLength: 35
      quotationDate:
        description: Date and time at which an exchange rate is quoted.
        type: string
        format: date
    example: |-
      {
        "type" : "Contract",
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        },
        "sourceCurrency" : "EUR",
        "targetCurrency" : "USD",
        "unitCurrency" : "EUR",
        "exchangeRate" : 1.1,
        "contractIdentification" : "Ctrct4XG56",
        "quotationDate" : "2020-02-17"
      }
  AmountAndCurrencyExchange:
    x-definition-type: ISO20022
    description: |
      Provides detailed information on the original amount.
      The [instructedAmount] property identifies the amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party and provides currency exchange information in case the instructed amount and/or currency is/are different from the entry amount and/or currency.
      The [transactionAmount] property identifies the amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party and provides currency exchange information in case the instructed amount and/or currency is/are different from the entry amount and/or currency.
      The [cunterValueAmount] property embbeds the set of elements used to provide the countervalue amount and currency exchange information.
      - This can be either the counter amount quoted in an FX deal, or the result of the currency information applied to an instructed amount, before deduction of charges.
      The [announcedPostingAmount] property specifies the amount of money, based on terms of corporate action event and balance of underlying securities, entitled to/from the account owner.
      - In some situations, this amount may alternatively be called entitled amount.
    type: object
    properties:
      instructedAmount:
        $ref: "#/definitions/AmountAndCurrencyExchangeDetails"
      transactionAmount:
        $ref: "#/definitions/AmountAndCurrencyExchangeDetails"
      counterValueAmount:
        $ref: "#/definitions/AmountAndCurrencyExchangeDetails"
      announcedPostingAmount:
        $ref: "#/definitions/AmountAndCurrencyExchangeDetails"
      proprietaryAmount:
        description: |
          Set of elements used to provide information on the original amount and currency exchange.
        type: array
        items:
          $ref: "#/definitions/AmountAndCurrencyExchangeDetails"
    example: |-
      {
        "instructedAmount" : {
          "type" : "Contract",
          "amount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          },
          "sourceCurrency" : "EUR",
          "targetCurrency" : "USD",
          "unitCurrency" : "EUR",
          "exchangeRate" : 1.1,
          "contractIdentification" : "Ctrct4XG56",
          "quotationDate" : "2020-02-17"
        }
      }
  TaxCharges:
    x-definition-type: ISO20022
    description: |
      ISO20022: Provides details on the tax applied to charges.
      - The [rate] property is the rate used to calculate the tax.
      - the [amount] property is the amount of money resulting from the calculation of the tax.
      API: Amounts must always be set as positive values.
    type: object
    properties:
      identification:
        description: Unique reference to unambiguously identify the nature of the tax levied, such as Value Added Tax (VAT).
        type: string
        maxLength: 35
      rate:
        $ref: "#/definitions/PercentageRate"
      amount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "identification" : "VAT",
        "rate" : 12.3,
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        }
      }
  ChargesRecord:
    x-definition-type: ISO20022
    description: |
      ISO20022: Provides further individual record details on the charges related to the payment transaction.
      - The [amount] proprty specifies the transaction charges to be paid by the charge bearer.
      - The [creditDebitIndicator] property indicates whether the charges amount is a credit or a debit amount.
        A zero amount is considered to be a credit.
      - the [code] property is the charge type, in a coded form
      - the [rate] property is the rate used to calculate the amount of the charge or fee.
      - the [bearer] property specifies which party/parties will bear the charges associated with the processing of the payment transaction.
      - the [agent] property specifies the agent that takes the transaction charges or to which the transaction charges are due.
      - the [tax] property provides details on the tax applied to charges.
      API: Amounts must always be set as positive values.
    type: object
    properties:
      amount:
        $ref: "#/definitions/AmountType"
      creditDebitIndicator:
        $ref: "#/definitions/CreditDebitIndicator"
      chargeIncludedIndicator:
        description: |
          Indicates whether the charge should be included in the amount or is added as pre-advice.
          One of the following values must be used:
            - Meaning When True: Included
            - Meaning When False: Pre-advised
        type: boolean
      code:
        $ref: "#/definitions/CodeAndIssuer"
      rate:
        $ref: "#/definitions/PercentageRate"
      bearer:
        $ref: "#/definitions/ChargeBearerCode"
      agent:
        $ref: "#/definitions/FinancialInstitutionIdentification"
      tax:
        $ref: "#/definitions/TaxCharges"
    example: |-
      {
        "amount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        },
        "creditDebitIndicator" : "DBIT",
        "chargeIncludedIndicator" : true,
        "code" : {
          "code" : "CD01",
          "issuer" : "MyIssuer"
        },
        "rate" : 0.5,
        "bearer" : "SHAR",
        "agent" : {
          "bicFi" : "BNKAFRPPXXX"
        },
        "tax" : {
          "identification" : "VAT",
          "rate" : 12.3,
          "amount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          }
        }
      }
  Charges:
    x-definition-type: ISO20022
    description: |
      ISO20022: Provides further details on the charges related to the payment transaction.
      API: Amounts must always be set as positive values.
    type: object
    properties:
      totalChargesAndTaxAmount:
        description: Total of all charges and taxes applied to the entry.
        $ref: "#/definitions/AmountType"
      record:
        description: Provides details of the individual charges record.
        type: array
        items:
          $ref: "#/definitions/ChargesRecord"
    example: |-
      {
        "totalChargesAndTaxAmount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        },
        "record" : [ {
          "amount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          },
          "creditDebitIndicator" : "DBIT",
          "chargeIncludedIndicator" : true,
          "code" : {
            "code" : "CD01",
            "issuer" : "MyIssuer"
          },
          "rate" : 0.5,
          "bearer" : "SHAR",
          "agent" : {
            "bicFi" : "BNKAFRPPXXX"
          },
          "tax" : {
            "identification" : "VAT",
            "rate" : 12.3,
            "amount" : {
              "amount" : 123.45,
              "currency" : "EUR"
            }
          }
        } ]
      }
  TransactionResource:
    x-definition-type: ISO20022
    description: |
      ISO20022: Structure of a transaction.
      - the [charges] property provides information on the charges, pre-advised or included in the entry amount.
      - the [relatedParties] property specifies either the debtor or the creditor counterpart information
      API:
      - Amounts must always be set as positive values in complement with the Credit/Debit indicator.
      - At least expectedBookingDate or bookingDate must be provided"
    type: object
    required:
      - transactionAmount
      - status
      - creditDebitIndicator
    properties:
      resourceId:
        readOnly: true
        $ref: "#/definitions/ResourceId"
      entryReference:
        description: |
          Technical incremental identification of the transaction used for reconciliation by the AISP.
          Once assigned, this value cannot be changed for the relevant transaction.
          It is assumed that this value is unique and thus cannot be shared by several transactions.

          The reconciliation of transactions can be done by the [resourceId] or the [entryReference] field.
          If none of these fields cannot be provided, it is therefore suggested that the [remittanceInformation] field, once set, should not be updated afterwards.
          Actually the [additionalTransactionInformation] field can be used to update the details of a given transaction.
        type: string
        maxLength: 40
      transactionAmount:
        $ref: "#/definitions/AmountType"
      creditDebitIndicator:
        $ref: "#/definitions/CreditDebitIndicator"
      transactionAmountDetails:
        $ref: "#/definitions/AmountAndCurrencyExchange"
      status:
        $ref: "#/definitions/TransactionStatus"
      endToEndId:
        $ref: "#/definitions/EndToEndId"
      expectedBookingDate:
        description: |
          Expected booking date of the transaction on the account if the transaction is not yet booked.
        type: string
        format: date-time
      bookingDate:
        description: |
          Real booking date of the transaction on the account
        type: string
        format: date-time
      valueDate:
        description: Value date of the transaction on the account
        type: string
        format: date-time
      transactionDate:
        description: |
          Date used for specific purposes:
          - for card transaction: date of the commercial transaction
          - for credit transfer: acquiring date of the transaction as seen by the Payer's Bank
          - for direct debit: receiving date of the transaction as seen by the Payer's Bank
        type: string
        format: date-time
      bankTransactionCode:
        $ref: "#/definitions/BankTransactionCode"
      charges:
        $ref: "#/definitions/Charges"
      relatedParties:
        $ref: "#/definitions/RelatedParties"
      remittanceInformation:
        $ref: "#/definitions/RemittanceInformation"
      additionalTransactionInformation:
        description: Additional information about reconciliation.
        type: string
        maxLength: 500
      standingOrderCharacteristics:
        $ref: "#/definitions/StandingOrderCharacteristics"
      merchantCategoryCode:
        description: |
          Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.
        type: string
        maxLength: 4
      _links:
        $ref: "#/definitions/TransactionLinks"
      bookingPeriod:
        $ref: "#/definitions/Period"
      cardId:
        $ref: "#/definitions/GenericIdentification"
    example: |-
      {
        "entryReference" : "DHGF36DJ0",
        "transactionAmount" : {
          "amount" : 12.25,
          "currency" : "EUR"
        },
        "creditDebitIndicator" : "DBIT",
        "status" : "BOOK",
        "bookingDate" : "2020-02-14T00:00+01:00",
        "remittanceInformation" : {
          "unstructured" : [ "Cheque n XXXXXXX" ]
        }
      }
  PsuStatusType:
    x-definition-type: ISO20022
    description: |
      ISO20022: Specifies the type of account ownership.
      | Name | Description |
      | ---- | ---------- |
      | Account Holder | Person which is the sole holder of the account. |
      | Account Co-Holder | Person which shares with others the holding of the account. |
      | Attorney | Generic case of a person having a mandate to access the account data. |
      | Custodian For Minor | Entity that holds shares/units on behalf of a legal minor. Although the account is registered under the name of the minor, the custodian retains control of the account. |
      | Legal Guardian | Entity that was appointed by a legal authority to act on behalf of a person judged to be incapacitated. |
      | Nominee | Entity named by the beneficial owner to act on its behalf, often to facilitate dealing, or to conceal the identity of the beneficiary. |
      | Successor On Death | Deceased's estate, or successor, to whom the respective percentage of ownership will be transferred upon the death of one of the owners. |
      | Trustee | Legal owners of the property. However, the beneficiary has the equitable or beneficial ownership. |
    type: string
    maxLength: 35
  AccountResource:
    x-definition-type: Resources
    description: |
      PSU account that is made available to the TPP.
      The ASPSP is able to set up specific accounts in order to provide card transactions with a delayed debit.
      This account must be specific to a given card. Consequently, when the card is renewed, a new account will be set up.
      ASPSP might also set-up different accounts for one given card but with different imputation dates. The remanence of these accounts is up to the ASPSP but must be equal or greater than the one which is provided through the Web-Banking interface.
      Case a payment card is blocked, any relevant information (balances, transactions...) that is available through the ASPSP PSU-interfaces must also be available through the API till the end of remanence period.
    type: object
    required:
      - name
      - cashAccountType
      - _links
    properties:
      workspace:
        $ref: "#/definitions/Workspace"
      resourceId:
        readOnly: true
        $ref: "#/definitions/ResourceId"
      bicFi:
        description: |
          ISO20022: Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identification code (BIC)".
        type: string
        pattern: "^[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}$"
      accountId:
        $ref: "#/definitions/AccountIdentification"
      name:
        description: |
          Label of the PSU account
          In case of a delayed debit card transaction set, the name shall specify the holder name and can also provide the imputation date
        type: string
        maxLength: 70
      details:
        description: |
          Specifications that might be provided by the ASPSP
          - characteristics of the account
          - characteristics of the relevant card
        type: string
        maxLength: 140
      linkedAccount:
        description: |
          Case of a set of pending card transactions, the ASPSP will provide the relevant cash account the card is set up on.
          When used, this field must be valued with the resourceId of the relevant cash account.
        type: string
        maxLength: 70
      usage:
        description: |
          Specifies the usage of the account
          | Code | Description |
          | ---- | ----------- |
          | PRIV | Private personal account |
          | ORGA | Professional account |
          Case of a set of pending card transactions, this field does not have to be set since the usage is inherited from the linked account.
        type: string
        enum:
          - PRIV
          - ORGA
      cashAccountType:
        description: |
          Specifies the type of the account
          | Code | Description |
          | ---- | ----------- |
          | CACC | Cash account |
          | CARD | List of card based transactions |
        type: string
        enum:
          - CACC
          - CARD
      product:
        description: |
          Product Name of the Bank for this account, proprietary definition
        type: string
        maxLength: 35
      balances:
        description: list of balances provided by the ASPSP
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/BalanceResource"
      psuStatus:
        $ref: "#/definitions/PsuStatusType"
      _links:
        $ref: "#/definitions/AccountLinks"
    example: |-
      {
        "resourceId" : "Alias1",
        "bicFi" : "BNKAFRPPXXX",
        "accountId" : {
          "iban" : "YY64COJH41059545330222956960771321",
          "currency" : "EUR"
        },
        "name" : "Compte de Mr et Mme Dupont",
        "usage" : "PRIV",
        "cashAccountType" : "CACC",
        "psuStatus" : "Co-account Holder",
        "_links" : {
          "balances" : {
            "href" : "/v1/accounts/Alias1/balances"
          },
          "transactions" : {
            "href" : "/v1/accounts/Alias1/transactions"
          },
          "overdrafts" : {
            "href" : "/v1/accounts/Alias1/overdrafts"
          }
        }
      }
  BalanceResource:
    x-definition-type: Resources
    x-generic: true
    description: Structure of an account balance
    type: object
    required:
      - name
      - balanceAmount
      - balanceType
    properties:
      name:
        description: Label of the balance
        type: string
        maxLength: 70
      balanceAmount:
        $ref: "#/definitions/AmountType"
      balanceType:
        $ref: "#/definitions/BalanceStatus"
      lastChangeDateTime:
        description: Timestamp of the last change of the balance amount
        type: string
        format: date-time
      referenceDate:
        description: Reference date for the balance
        type: string
        format: date-time
      lastCommittedTransaction:
        description: |
          Identification of the last committed transaction. This is actually useful for instant balance.
        type: string
        maxLength: 40
    example: |-
      {
        "name" : "Solde comptable au 12/01/2017",
        "balanceAmount" : {
          "amount" : 123.45,
          "currency" : "EUR"
        },
        "balanceType" : "CLBD",
        "lastCommittedTransaction" : "A452CH"
      }
  Nonce:
    x-definition-type: Resources
    description: |
      Challenge to be sent in order to avoid replay of the authentication process.
    type: string
    maxLength: 70
  ConfirmationResource:
    x-definition-type: Resources
    description: Confirmation request resource
    type: object
    properties:
      nonce:
        $ref: "#/definitions/Nonce"
      psuAuthenticationFactor:
        description: authentication factor forwarded by the TPP to the ASPSP in order to fulfil the strong customer authentication process
        type: string
    example: |-
      {
        "nonce" : "Nonce56fdd",
        "psuAuthenticationFactor" : "U1RF51mITWWmTQ72M1xWiw"
      }
  PaymentInformationId:
    x-definition-type: ISO20022
    description: |
      ISO20022: Reference assigned by a sending party to unambiguously identify the payment information block within the message.
      API: This field is a clue for idempotency check by the ASPSP in order to avoid duplicate SCA or payment execution. However the ASPSP may use other mechanisms.
    type: string
    pattern: '^([a-zA-Z0-9 /\-?:\()\.,'']{1,36})$'
  CreationDateTime:
    x-definition-type: ISO20022
    description: |
      ISO20022: Date and time at which a (group of) payment instruction(s) was created by the instructing party.
    type: string
    format: date-time
  FundsAvailabilityInformation:
    x-definition-type: ISO20022
    description: |
      Indicator that the payment can be covered or not by the funds available on the relevant account
      - true: payment is covered
      - false: payment is not covered
      This indicator must be provided by the ASPSP when the Booking Information is present and set to "False".
      This indicator will not be provided if the Booking Information is absent or set to "True".
    type: boolean
    readOnly: true
  BookingInformation:
    x-definition-type: ISO20022
    description: |
      Indicator that the payment can be immediately booked or not
      - true: payment is booked
      - false: payment is not booked
      Booking a transaction means that the funds required by this transaction are immediatly reserved and that a subsequent transaction will not interfere with the proper execution of the payment.
      However, usual fraud detection mechanisms might still be triggered and result as a rejection of the payment.
      This indicator must be provided when the relevant Credit Transfer will be executed as soon as possible but not as an instant payment.
      This indicator is irrelevant and will not be provided for delayed payments.
      This indicator is only relevant for the first occurrence of a standing order when this occurrence is not delayed and will be executed as soon as possible.

      Case the Information System cannot handle this immediate booking, the ASPSP will have to provide the funds availability information.
    type: boolean
    readOnly: true
  BatchBookingIndicator:
    x-definition-type: ISO20022
    description: |
      Identifies whether a single entry per individual transaction or a batch entry for the sum of the amounts of all transactions within the group of a message is requested.
      Meaning When True: Identifies that a batch entry for the sum of the amounts of all transactions in the batch or message is requested.
      Meaning When False: Identifies that a single entry for each of the transactions in the batch or message is requested.
      Default value: each ASPSP must be able to specify its own default value.
    type: boolean
  PaymentRequestResource:
    x-definition-type: Resources
    x-generic: true
    description: |
      ISO20022: The PaymentRequestResource message is sent by the Creditor sending party to the Debtor receiving party, directly or through agents. It is used by a Creditor to request movement of funds from the debtor account to a creditor.
      API:
      Information about the creditor (Id, account and agent) must be placed at instruction level. Thus multi-beneficiary payments can be handled.
      The requested execution date must be placed at payment level even when all instructions are requested to be executed at the same date.
      The latest case includes:
      - multiple instructions having different requested execution dates
      - standing orders settings
    type: object
    required:
      - paymentInformationId
      - creationDateTime
      - numberOfTransactions
      - initiatingParty
      - paymentTypeInformation
      - creditTransferTransaction
      - supplementaryData
    x-not-allowed-in-post:
      - paymentInformationStatus
      - statusReasonInformation
    properties:
      resourceId:
        readOnly: true
        $ref: "#/definitions/ResourceId"
      paymentInformationId:
        $ref: "#/definitions/PaymentInformationId"
      batchBooking:
        $ref: "#/definitions/BatchBookingIndicator"
      creationDateTime:
        $ref: "#/definitions/CreationDateTime"
      numberOfTransactions:
        description: |
          ISO20022: Number of individual transactions contained in the message.
          API: Each ASPSP will specify a maximum value for this field taking into accounts its specificities about payment request handling
        type: integer
        minimum: 1
      initiatingParty:
        $ref: "#/definitions/PartyIdentification"
      acceptDebtorAccountChange:
        description: |
          indicator that the debtor account can be changed in the payment request by the ASPSP if needed
          - true: debtor account can be changed (default value)
          - false: debtor account cannot be changed
        type: boolean
      acceptChargeHandlingChange:
        description: |
          indicator that the charge handling can be changed in the payment request by the ASPSP if needed
          - true: charge handling can be changed (default value)
          - false: charge handling cannot be changed
        type: boolean
      acceptInstantPaymentDowngrade:
        description: |
          Indicator that the requested instant SEPA Credit Transfer method can be downgraded by the ASPSP into a plain-vanilla SEPA Credit Transfer, when Instant SCT cannot apply or is refused by the PSU.
          Eventually, it is up to the ASPSP to downgrade or reject the payment. In case of a downgrade, the ASPSP will have to update de relevant field [LocalInstrument] and remove the "INST" value in order to keep the PISP informed.
          - true: payment method can be downgraded
          - false: payment method cannot be downgraded (default value)
        type: boolean
      paymentTypeInformation:
        $ref: "#/definitions/PaymentTypeInformation"
      debtor:
        $ref: "#/definitions/PartyIdentification"
      debtorAccount:
        $ref: "#/definitions/AccountIdentification"
      debtorAgent:
        $ref: "#/definitions/FinancialInstitutionIdentification"
      chargeBearer:
        $ref: "#/definitions/ChargeBearerCode"
      paymentInformationStatus:
        $ref: "#/definitions/PaymentInformationStatusCode"
      statusReasonInformation:
        $ref: "#/definitions/StatusReasonInformation"
      fundsAvailability:
        $ref: "#/definitions/FundsAvailabilityInformation"
      booking:
        $ref: "#/definitions/BookingInformation"
      creditTransferTransaction:
        description: |
          ISO20022: Payment processes required to transfer cash from the debtor to the creditor.
          API: Each ASPSP will specify a maxItems value for this field taking into accounts its specificities about payment request handling
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/CreditTransferTransactionResource"
      supplementaryData:
        $ref: "#/definitions/SupplementaryData"
    example: |-
      {
        "paymentInformationId" : "MyPmtInfId",
        "creationDateTime" : "2020-02-19T13:56:54.877+01:00",
        "numberOfTransactions" : 2,
        "initiatingParty" : {
          "name" : "MyPreferredPisp",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "12FR5",
            "schemeName" : "COID",
            "issuer" : "ACPR"
          }
        },
        "paymentTypeInformation" : {
          "serviceLevel" : "SEPA",
          "localInstrument" : "INST",
          "categoryPurpose" : "CASH"
        },
        "debtor" : {
          "name" : "MyCustomer",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "privateId" : {
            "identification" : "FD37G",
            "schemeName" : "BANK",
            "issuer" : "BICXYYTTZZZ"
          }
        },
        "chargeBearer" : "SLEV",
        "creditTransferTransaction" : [ {
          "paymentId" : {
            "instructionId" : "MyInstrId3",
            "endToEndId" : "MyEndToEndId3"
          },
          "requestedExecutionDate" : "2020-02-19T13:56:54.878+01:00",
          "instructedAmount" : {
            "amount" : 124.35,
            "currency" : "EUR"
          },
          "beneficiary" : {
            "creditor" : {
              "name" : "June Doe",
              "postalAddress" : {
                "country" : "FR",
                "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
              },
              "organisationId" : {
                "identification" : "12FR5",
                "schemeName" : "COID",
                "issuer" : "ACPR"
              },
              "privateId" : {
                "identification" : "852126789",
                "schemeName" : "SIREN",
                "issuer" : "FR"
              }
            },
            "creditorAccount" : {
              "iban" : "YY49QEZO90424459988701367845944910",
              "currency" : "EUR"
            }
          },
          "ultimateCreditor" : {
            "name" : "myPreferredUltimateMerchant",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "85212678900025",
              "schemeName" : "SIRET",
              "issuer" : "FR"
            }
          },
          "purpose" : "CASH",
          "remittanceInformation" : {
            "unstructured" : [ "MyRemittanceInformation" ]
          }
        }, {
          "paymentId" : {
            "instructionId" : "MyInstrId4",
            "endToEndId" : "MyEndToEndId4"
          },
          "requestedExecutionDate" : "2020-02-19T13:56:54.878+01:00",
          "instructedAmount" : {
            "amount" : 124.35,
            "currency" : "EUR"
          },
          "beneficiary" : {
            "creditor" : {
              "name" : "John Doe",
              "postalAddress" : {
                "country" : "FR",
                "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
              },
              "organisationId" : {
                "identification" : "12FR5",
                "schemeName" : "COID",
                "issuer" : "ACPR"
              },
              "privateId" : {
                "identification" : "852126789",
                "schemeName" : "SIREN",
                "issuer" : "FR"
              }
            },
            "creditorAccount" : {
              "iban" : "YY27KYHO61109079868328944728829436",
              "currency" : "EUR"
            }
          },
          "ultimateCreditor" : {
            "name" : "myPreferredUltimateMerchant",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "85212678900025",
              "schemeName" : "SIRET",
              "issuer" : "FR"
            }
          },
          "purpose" : "CASH",
          "remittanceInformation" : {
            "unstructured" : [ "MyRemittanceInformation" ]
          }
        } ],
        "supplementaryData" : {
          "acceptedAuthenticationApproach" : [ "REDIRECT", "DECOUPLED" ],
          "successfulReportUrl" : "http://myPisp/PaymentSuccess",
          "unsuccessfulReportUrl" : "http://myPisp/PaymentFailure"
        }
      }
  PaymentCoverageRequestResource:
    x-definition-type: Resources
    description: |
      Payment coverage request structure.
      The request must rely either on a cash account or a payment card.
      The [instructedAmount] property is the payment account on wihich the request is processed. This amount must be positive.
      Amounts must always be set as positive values.
    type: object
    required:
      - paymentCoverageRequestId
      - accountId
    properties:
      paymentCoverageRequestId:
        description: Identification of the payment Coverage Request
        type: string
        maxLength: 35
      payee:
        description: The merchant where the card is accepted as information to the PSU.
        type: string
        maxLength: 70
      instructedAmount:
        $ref: "#/definitions/AmountType"
      accountId:
        $ref: "#/definitions/AccountIdentification"
    example: |-
      {
        "paymentCoverageRequestId" : "MyCoverage123456",
        "instructedAmount" : {
          "amount" : 12345.0,
          "currency" : "EUR"
        },
        "accountId" : {
          "iban" : "YY13RDHN98392489481620896668799742"
        }
      }
  Overdraft:
    x-definition-type: ISO20022
    description: |
      ISO20022: Overdraft characteristics
      API: Amounts must always be set as positive values.
    type: object
    required:
      - allowedAmount
    properties:
      allowedAmount:
        $ref: "#/definitions/AmountType"
    example: |-
      {
        "allowedAmount" : {
          "amount" : 30000.0,
          "currency" : "EUR"
        }
      }
  Workspace:
    description: Some ASPSP may provide different user workspaces that can be accessed by the same authenticated PSU. In this case, the AISP is able to retrieve the different pieces of account information by specifying the relevant workspace as a QUERY parameter. Identification of the workspace to be used when processing the request. If not present, the default workspace to be used is the one that is linked to the authentication processed during the OAuth2 access token request.
    type: object
    required:
      - identification
      - label
    properties:
      identification:
        description: identification of the workspace to be used as an optional query parameter for some AISP queries
        type: string
        maxLength: 32
      label:
        description: textual description of the workspace as specified by the ASPSP in relationship wth the PSU
        type: string
        maxLength: 128
    example: |-
      {
        "identification" : "PRO_1",
        "label" : "comptes de la SARL PRO1"
      }
  HalAccounts:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the list of the available accounts to the AISP
    type: object
    required:
      - accounts
      - _links
    properties:
      accounts:
        description: |
          List of PSU account that are made available to the TPP
        type: array
        items:
          $ref: "#/definitions/AccountResource"
      _links:
        $ref: "#/definitions/AccountListLinks"
    example: |-
      {
        "accounts" : [ {
          "workspace": {
            "identification" : "PERSO",
            "label" : "comptes personnels"
          },
          "resourceId" : "Alias1",
          "bicFi" : "BNKAFRPPXXX",
          "accountId" : {
            "iban" : "YY64COJH41059545330222956960771321",
            "currency" : "EUR"
          },
          "name" : "Compte de Mr et Mme Dupont",
          "usage" : "PRIV",
          "cashAccountType" : "CACC",
          "psuStatus" : "Co-account Holder",
          "_links" : {
            "balances" : {
              "href" : "/v1/accounts/Alias1/balances"
            },
            "transactions" : {
              "href" : "/v1/accounts/Alias1/transactions"
            },
            "overdrafts" : {
              "href" : "/v1/accounts/Alias1/overdrafts"
            }
          }
        }, {
          "workspace": {
            "identification" : "PERSO",
            "label" : "comptes personnels"
          },
          "resourceId" : "Alias2",
          "bicFi" : "BNKAFRPPXXX",
          "accountId" : {
            "iban" : "YY64COJH41059545330222956960771321",
            "currency" : "EUR"
          },
          "name" : "Compte de Mme Dupont",
          "usage" : "PRIV",
          "cashAccountType" : "CACC",
          "psuStatus" : "Account Holder",
          "_links" : {
            "balances" : {
              "href" : "/v1/accounts/Alias2/balances"
            },
            "transactions" : {
              "href" : "/v1/accounts/Alias2/transactions"
            },
            "overdrafts" : {
              "href" : "/v1/accounts/Alias2/overdrafts"
            }
          }
        } ],
        "_links" : {
          "self" : {
            "href" : "/v1/accounts"

          },
          "consents" : {
            "href" : "/v1/consents"

          },
          "endUserIdentity" : {
            "href" : "v1/end-user-identity"
          },
          "trustedBeneficiaries" : {
            "href" : "/v1/trusted-beneficiaries"
          }
        }
      }
  HalBalances:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the list of the relevant balances for a given account to the AISP
    type: object
    required:
      - balances
      - _links
    properties:
      balances:
        description: List of account balances
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/BalanceResource"
      _links:
        $ref: "#/definitions/BalancesLinks"
    example: |-
      {
        "balances" : [ {
          "name" : "Solde comptable au 12/01/2017",
          "balanceAmount" : {
            "amount" : 123.45,
            "currency" : "EUR"
          },
          "balanceType" : "CLBD",
          "lastCommittedTransaction" : "A452CH"
        }, {
          "name" : "Solde instantane au 12/01/2017 20:13",
          "balanceAmount" : {
            "amount" : 105.65,
            "currency" : "EUR"
          },
          "balanceType" : "XPCD",
          "lastCommittedTransaction" : "A452D0"
        } ],
        "_links" : {
          "self" : {
            "href" : "/v1/accounts/myAccountId/balances"
          },
          "parent-list" : {
            "href" : "/v1/accounts"
          },
          "transactions" : {
            "href" : "/v1/accounts/myAccountId/transactions"
          },
          "overdrafts" : {
            "href" : "/v1/accounts/myAccountId/overdrafts"
          }
        }
      }
  HalTransactions:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the list of the transactions for a given account to the AISP
    type: object
    required:
      - transactions
      - _links
    properties:
      transactions:
        description: List of transactions
        type: array
        items:
          $ref: "#/definitions/TransactionResource"
      _links:
        $ref: "#/definitions/TransactionsLinks"
    example: |-
      {
        "transactions" : [ {
          "entryReference" : "DHGF36DJ0",
          "transactionAmount" : {
            "amount" : 12.25,
            "currency" : "EUR"
          },
          "creditDebitIndicator" : "DBIT",
          "status" : "BOOK",
          "bookingDate" : "2020-02-14T00:00+01:00",
          "remittanceInformation" : {
            "unstructured" : [ "Cheque n XXXXXXX" ]
          }
        }, {
          "entryReference" : "DHGF36DJ1",
          "transactionAmount" : {
            "amount" : 66.38,
            "currency" : "EUR"
          },
          "creditDebitIndicator" : "DBIT",
          "status" : "BOOK",
          "bookingDate" : "2020-02-14T00:00+01:00",
          "remittanceInformation" : {
            "unstructured" : [ "Prelevement ICS XXXXXXX" ]
          }
        } ],
        "_links" : {
          "self" : {
            "href" : "/v1/accounts/Alias1/transactions"
          },
          "parent-list" : {
            "href" : "/v1/accounts"
          },
          "balances" : {
            "href" : "/v1/accounts/Alias1/balances"
          },
          "overdrafts" : {
            "href" : "/v1/accounts/Alias1/overdrafts"
          },
          "last" : {
            "href" : "/v1/accounts/Alias1/transactions?page=last"
          },
          "next" : {
            "href" : "/v1/accounts/Alias1/transactions?page=next"
          }
        }
      }
  HalOverdrafts:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the list of the overdrafts that can apply on a given account to the AISP
    type: object
    required:
      - overdrafts
      - _links
    properties:
      overdrafts:
        $ref: "#/definitions/Overdraft"
      _links:
        $ref: "#/definitions/OverdraftsLinks"
    example: |-
      {
        "overdrafts" : {
          "allowedAmount" : {
            "amount" : 30000.0,
            "currency" : "EUR"
          }
        },
        "_links" : {
          "self" : {
            "href" : "/v1/accounts/Alias1/overdrafts"
          },
          "parent-list" : {
            "href" : "/v1/accounts"
          },
          "balances" : {
            "href" : "/v1/accounts/Alias1/balances"
          },
          "transactions" : {
            "href" : "/v1/accounts/Alias1/transactions"
          }
        }
      }
  HalPaymentRequest:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the original Payment Request to the PISP
    type: object
    required:
      - paymentRequest
      - _links
    properties:
      paymentRequest:
        $ref: "#/definitions/PaymentRequestResource"
      _links:
        $ref: "#/definitions/PaymentRequestLinks"
    example: |-
      {
        "paymentRequest" : {
          "resourceId" : "MyPmtInfRscId",
          "paymentInformationId" : "MyPmtInfId",
          "creationDateTime" : "2020-02-19T13:56:54.758+01:00",
          "numberOfTransactions" : 2,
          "initiatingParty" : {
            "name" : "MyPreferredPisp",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "12FR5",
              "schemeName" : "COID",
              "issuer" : "ACPR"
            }
          },
          "paymentTypeInformation" : {
            "serviceLevel" : "SEPA",
            "localInstrument" : "INST",
            "categoryPurpose" : "CASH"
          },
          "debtor" : {
            "name" : "MyCustomer",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "privateId" : {
              "identification" : "FD37G",
              "schemeName" : "BANK",
              "issuer" : "BICXYYTTZZZ"
            }
          },
          "debtorAgent" : {
            "bicFi" : "BNKAFRPPXXX"
          },
          "chargeBearer" : "SLEV",
          "paymentInformationStatus" : "PDNG",
          "creditTransferTransaction" : [ {
            "paymentId" : {
              "instructionId" : "MyInstrId3",
              "endToEndId" : "MyEndToEndId3"

            },
            "requestedExecutionDate" : "2020-02-19T13:56:54.759+01:00",
            "instructedAmount" : {
              "amount" : 124.35,
              "currency" : "EUR"

            },
            "beneficiary" : {
              "creditor" : {
                "name" : "June Doe",
                "postalAddress" : {
                  "country" : "FR",
                  "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
                },
                "organisationId" : {
                  "identification" : "12FR5",
                  "schemeName" : "COID",
                  "issuer" : "ACPR"
                },
                "privateId" : {
                  "identification" : "852126789",
                  "schemeName" : "SIREN",
                  "issuer" : "FR"
                }
              },
              "creditorAccount" : {
                "iban" : "YY49QEZO90424459988701367845944910",
                "currency" : "EUR"
              }
            },
            "ultimateCreditor" : {
              "name" : "myPreferredUltimateMerchant",
              "postalAddress" : {
                "country" : "FR",
                "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
              },
              "organisationId" : {
                "identification" : "85212678900025",
                "schemeName" : "SIRET",
                "issuer" : "FR"
              }
            },
            "purpose" : "CASH",
            "remittanceInformation" : {
              "unstructured" : [ "MyRemittanceInformation" ]
            },
            "transactionStatus" : "PDNG"
          }, {
            "paymentId" : {
              "instructionId" : "MyInstrId4",
              "endToEndId" : "MyEndToEndId4"
            },
            "requestedExecutionDate" : "2020-02-19T13:56:54.759+01:00",
            "instructedAmount" : {
              "amount" : 124.35,
              "currency" : "EUR"
            },
            "beneficiary" : {
              "creditor" : {
                "name" : "John Doe",
                "postalAddress" : {
                  "country" : "FR",
                  "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
                },
                "organisationId" : {
                  "identification" : "12FR5",
                  "schemeName" : "COID",
                  "issuer" : "ACPR"
                },
                "privateId" : {
                  "identification" : "852126789",
                  "schemeName" : "SIREN",
                  "issuer" : "FR"
                }
              },
              "creditorAccount" : {
                "iban" : "YY27KYHO61109079868328944728829436",
                "currency" : "EUR"
              }
            },
            "ultimateCreditor" : {
              "name" : "myPreferredUltimateMerchant",
              "postalAddress" : {
                "country" : "FR",
                "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
              },
              "organisationId" : {
                "identification" : "85212678900025",
                "schemeName" : "SIRET",
                "issuer" : "FR"
              }
            },
            "purpose" : "CASH",
            "remittanceInformation" : {
              "unstructured" : [ "MyRemittanceInformation" ]
            },
            "transactionStatus" : "PDNG"
          } ],
          "supplementaryData" : {
            "acceptedAuthenticationApproach" : [ "REDIRECT", "DECOUPLED" ],
            "appliedAuthenticationApproach" : "REDIRECT",
            "successfulReportUrl" : "http://myPisp/PaymentSuccess",
            "unsuccessfulReportUrl" : "http://myPisp/PaymentFailure"
          }
        },
        "_links" : {
          "request" : {
            "href" : "/v1/payment-requests/MyPmtInfRscId"
          },
          "confirmation" : {
            "href" : "/v1/payment-requests/MyPmtInfRscId/confirmation"
          }
        }
      }
  HalCreditTransfertTransactions:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the transactions of a given payment request to the PISP
    type: object
    required:
      - creditTransferTransaction
      - _links
    properties:
      creditTransferTransaction:
        description: |
          ISO20022: Payment processes required to transfer cash from the debtor to the creditor.
          API: Each ASPSP will specify a maxItems value for this field taking into accounts its specificities about payment request handling
        type: array
        minItems: 0
        items:
          $ref: "#/definitions/CreditTransferTransactionResource"
      _links:
        $ref: "#/definitions/CreditTransferTransactionLinks"
    example: |-
      {
        "creditTransferTransaction": [
          {
            "paymentId": {
              "instructionId": "MyInstrId3",
              "endToEndId": "MyEndToEndId3"
            },
            "requestedExecutionDate": "2021-08-23T14:27:04.601852Z",
            "instructedAmount": {
              "amount": 124.35,
              "currency": "EUR"
            },
            "beneficiary": {
              "creditor": {
                "name": "myMerchant",
                "postalAddress": {
                  "country": "FR",
                  "addressLine": [
                    "18 rue de la DSP2",
                    "75008 PARIS"
                  ]
                },
                "organisationId": {
                  "identification": "852126789",
                  "schemeName": "SIREN",
                  "issuer": "FR"
                }
              },
              "creditorAccount": {
                "iban": "YY64COJH41059545330222956960771321"
              }
            },
            "ultimateCreditor": {
              "name": "MyPreferredPisp",
              "postalAddress": {
                "country": "FR",
                "addressLine": [
                  "18 rue de la DSP2",
                  "75008 PARIS"
                ]
              },
              "organisationId": {
                "identification": "12FR5",
                "schemeName": "COID",
                "issuer": "ACPR"
              }
            },
            "purpose": "CASH",
            "remittanceInformation": {
              "unstructured": [
                "MyRemittanceInformation"
              ]
            }
          }
        ],
        "links": {
          "self": {
            "href": "/v1/payment-requests/MyPmtInfRscId/creditTransfertTransactions"
          },
          "parent": {
            "href": "/v1/payment-requests/MyPmtInfRscId"
          }
        }
      }
  HalAuthenticationRequest:
    x-definition-type: Hal
    description: |
      Data forwarded by the ASPSP top the PISP after creation of the Payment Request resource creation
      The ASPSP, based on the authentication approaches proposed by the PISP, choose the one that it can processed, in respect with the preferences and constraints of the PSU and indicates in this field which approach was chosen.
      It may happen that the ASPSP considers that, in case of payment cancellation request, there is no need for authentication and will then return "NONE".
    type: object
    properties:
      appliedAuthenticationApproach:
        readOnly: true
        $ref: "#/definitions/AuthenticationApproach"
      nonce:
        $ref: "#/definitions/Nonce"
      _links:
        $ref: "#/definitions/PaymentRequestResourceCreationLinks"
    example: |-
      {
        "appliedAuthenticationApproach" : "REDIRECT",
        "nonce" : "GH6HGH5CGH763",
        "_links" : {
          "consentApproval" : {
            "href" : "https://psd2.aspsp/consent-approval"
          }
        }
      }
  HalPaymentCoverageReport:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the payment coverage report to the CBPII
    type: object
    required:
      - request
      - result
      - _links
    properties:
      request:
        $ref: "#/definitions/PaymentCoverageRequestResource"
      result:
        description: |
          Result of the coverage check :
          - true: the payment can be covered
          - false: the payment cannot be covered
        type: boolean
      _links:
        $ref: "#/definitions/PaymentCoverageReportLinks"
    example: |-
      {
        "request" : {
          "paymentCoverageRequestId" : "MyCoverage123456",
          "instructedAmount" : {
            "amount" : 12345.0,
            "currency" : "EUR"
          },
          "accountId" : {
            "iban" : "YY13RDHN98392489481620896668799742"
          }
        },
        "result" : true,
        "_links" : {
          "self" : {
            "href" : "v1/funds-confirmations"
          }
        }
      }
  Beneficiary:
    x-definition-type: Resources
    description: Specification of a beneficiary
    type: object
    required:
      - creditor
    properties:
      workspace:
        $ref: "#/definitions/Workspace"
      id:
        description: Id of the beneficiary
        type: string
        pattern: '^([a-zA-Z0-9 /\-?:\()\.,'']{1,36})$'
      isTrusted:
        description: |
          The ASPSP having not implemented the trusted beneficiaries list must not set this flag.
          Otherwise, the ASPSP indicates whether or not the beneficiary was registered by the PSU within the trusted beneficiaries list.
          - true: the beneficiary is actually a trusted beneficiary
          - false: the beneficiary is not a trusted beneficiary
        type: boolean
        readOnly: true
      creditorAgent:
        $ref: "#/definitions/FinancialInstitutionIdentification"
      creditor:
        $ref: "#/definitions/PartyIdentification"
      creditorAccount:
        $ref: "#/definitions/AccountIdentification"
    example: |-
      {
        "creditor" : {
          "name" : "myMerchant",
          "postalAddress" : {
            "country" : "FR",
            "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
          },
          "organisationId" : {
            "identification" : "852126789",
            "schemeName" : "SIREN",
            "issuer" : "FR"
          }
        },
        "creditorAccount" : {
          "iban" : "YY64COJH41059545330222956960771321",
          "currency" : "EUR"
        }
      }
  NamePrefixCode:
    x-definition-type: ISO20022
    description: |
      Specifies the terms used to formally address a person.
      This field accepts the following code values
      | Code | Description |
      | ---- | ---------- |
      | DOCT | Doctor |
      | MADM | Madam |
      | MISS | Miss |
      | MIST | Mister |
    type: string
    enum:
      - DOCT
      - MADM
      - MISS
      - MIST
  Identity:
    x-definition-type: Iso20022
    description: HYPERMEDIA structure used for returning the identity of the PSU
    type: object
    required:
      - fullName
    properties:
      fullName:
        description: |
          Last name and first name
        type: string
        maxLength: 140
      namePrefix:
        $ref: "#/definitions/NamePrefixCode"
      firstName:
        description: |
          First name
        type: string
        maxLength: 70
      lastName:
        description: |
          Last name
        type: string
        maxLength: 70
    example: |-
      {
        "fullName" : "M. John Doe",
        "namePrefix" : "MIST",
        "firstName" : "John",
        "lastName" : "Doe"
      }
  HalOwners:
    x-definition-type: Hal
    description: |-
      HYPERMEDIA structure used for returning the identities of the account owners.
      These owners are either real persons or a company.
      - in the first case, the [identities] block must be used
      - in the second cas, the [company] property specifies the identity of the company owning the account.
    type: object
    required:
      - _links
    properties:
      company:
        $ref: "#/definitions/GenericIdentification"
      identities:
        description: |
          identity of the account owners.
        type: array
        items:
          $ref: "#/definitions/Identity"
      _links:
        $ref: "#/definitions/OwnersLinks"
    example: |-
      {
        "identities" : [ {
          "fullName" : "M. John Doe",
          "namePrefix" : "MIST",
          "firstName" : "John",
          "lastName" : "Doe"
        } ],
        "_links" : {
          "balances" : {
            "href" : "/v1/accounts/Alias1/balances"
          },
          "transactions" : {
            "href" : "/v1/accounts/Alias1/transactions"
          },
          "overdrafts" : {
            "href" : "/v1/accounts/Alias1/overdrafts"
          }
        }
      }
  HalEndUserIdentity:
    x-definition-type: Hal
    description: |
      HYPERMEDIA structure used for returning the identity of the PSU.
      The [identity] property specifies the identity of the PSU which has granted access to the AISP on the accounts data
      This information can be retrieved based on the PSU's authentication that occurred during the OAUTH2 access token initialisation.
    type: object
    required:
      - identity
      - _links
    properties:
      identity:
        $ref: "#/definitions/Identity"
      _links:
        $ref: "#/definitions/EndUserIdentityLinks"
    example: |-
      {
        "identity" : {
          "fullName" : "Mme Cecile Dupond",
          "namePrefix" : "MADM",
          "firstName" : "Cecile",
          "lastName" : "Dupond"
        },
        "_links" : {
          "self" : {
            "href" : "v1/end-user-identity"
          },
          "accounts" : {
            "href" : "/v1/accounts"
          },
          "consents" : {
            "href" : "/v1/consents"
          },
          "trustedBeneficiaries" : {
            "href" : "/v1/trusted-beneficiaries"
          }
        }
      }
  HalBeneficiaries:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the list of the whitelisted beneficiaries
    type: object
    required:
      - beneficiaries
      - _links
    properties:
      beneficiaries:
        description: List of trusted beneficiaries
        type: array
        items:
          $ref: "#/definitions/Beneficiary"
      _links:
        $ref: "#/definitions/BeneficiariesLinks"
    example: |-
      {
        "demoBeneficiaries" : [ {
          "creditor" : {
            "name" : "myMerchant",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "852126789",
              "schemeName" : "SIREN",
              "issuer" : "FR"
            }
          },
          "creditorAccount" : {
            "iban" : "YY64COJH41059545330222956960771321",
            "currency" : "EUR"
          }
        } ],
        "beneficiaries" : [ {
          "creditor" : {
            "name" : "myMerchant",
            "postalAddress" : {
              "country" : "FR",
              "addressLine" : [ "18 rue de la DSP2", "75008 PARIS" ]
            },
            "organisationId" : {
              "identification" : "852126789",
              "schemeName" : "SIREN",
              "issuer" : "FR"
            }
          },
          "creditorAccount" : {
            "iban" : "YY64COJH41059545330222956960771321",
            "currency" : "EUR"
          }
        } ],
        "_links" : {
          "self" : {
            "href" : "/v1/trusted-beneficiaries"
          },
          "accounts" : {
            "href" : "/v1/accounts"
          }
        }
      }
  AccessibleAccounts:
    x-definition-type: Resources
    description: List of accessible accounts for one given functionality
    type: array
    items:
      $ref: "#/definitions/AccountIdentification"
    example: |-
      {
        "workspace": "PRIV",
        "access": true
      }
  AccessibleTrustedBeneficiaries:
    description: list of workspaces for which the PSU has given consent to the access by the AISP
    type: object
    properties:
      workspace:
        description: |
          Identification of the workspace.
          If not provided, the default workspace is computed from the authentication that was used for getting the OAuth2 Access Token.
        type: string
        maxLength: 32
      access:
        description: |
          Indicator that access to the trusted beneficiaries list was granted or not to the AISP by the PSU for the default workspace
          - true: the access was granted
          - false: the access was not granted
        type: boolean
    example: |-
      {
        "workspace" : "PRO_1",
        "access" : "true"
      }
  Access:
    x-definition-type: Resources
    description: Requested access services.
    type: object
    required:
      - owners
      - balances
      - transactions
      - psuIdentity
    properties:
      owners:
        $ref: "#/definitions/AccessibleAccounts"
      balances:
        $ref: "#/definitions/AccessibleAccounts"
      transactions:
        $ref: "#/definitions/AccessibleAccounts"
      overdrafts:
        $ref: "#/definitions/AccessibleAccounts"
      trustedBeneficiaries:
        description: |
          Indicator that access to the trusted beneficiaries list was granted or not to the AISP by the PSU
          - true: the access was granted
          - false: the access was not granted
        type: boolean
      trustedWorkspaceBeneficiaries:
        description: |
          Indicator, for each given workspace, that access to the trusted beneficiaries list was granted or not to the AISP by the PSU.
        type: array
        items:
          $ref: "#/definitions/AccessibleTrustedBeneficiaries"
      psuIdentity:
        description: |
          Indicator that access to the PSU identity, first name and last name, was granted or not to the AISP by the PSU
          - true: the access was granted
          - false: the access was not granted
        type: boolean
    example: |-
      {
        "owners" : [ ],
        "balances" : [ {
          "other" : {
            "identification" : "Alias1",
            "schemeName" : "BANK",
            "issuer" : "BNKAFRPPXXX"
          },
          "currency" : "EUR"
        }, {
          "other" : {
            "identification" : "Alias2",
            "schemeName" : "BANK",
            "issuer" : "BNKAFRPPXXX"
          },
          "currency" : "EUR"
        } ],
        "transactions" : [ {
          "other" : {
            "identification" : "Alias1",
            "schemeName" : "BANK",
            "issuer" : "BNKAFRPPXXX"
          },
          "currency" : "EUR"
        } ],
        "trustedBeneficiaries" : "true",
        "psuIdentity" : true
      }
  ErrorDetail:
    x-definition-type: Technical
    description: detailed error description
    type: object
    properties:
      location:
        description: Location of the erroneous parameter when not in request body
        type: string
        enum:
          - header
          - query
      name:
        description: Name of the erroneous parameter when not in request body
        type: string
      path:
        description: JsonPath of the erroneous request body property
        type: string
      erroneousValue:
        description: Erroneous parameter value
        type: string
      message:
        description: Relevant message for the erroneous parameter
        type: string
      expectedPattern:
        description: Expected pattern, if any, that the erroneous parameter does not match with
        type: string
      expectedValueRange:
        description: Expected value range, if any, that the erroneous parameter does not match with
        type: object
        example: "{\n  \"minValue\": 1,\n  \"maxValue\": 100\n}        "
        properties:
          minValue:
            type: integer
          maxValue:
            type: integer
      expectedValueCount:
        description: Expected value count, in the case of an array item, that the erroneous parameter does not match with
        type: object
        example: "{\n  \"minValue\": \"1\"\n}        "
        properties:
          minValue:
            type: integer
          maxValue:
            type: integer
      expectedEnumeration:
        description: Expected enumeration, if any, that the erroneous parameter do not match with
        type: array
        items:
          type: string
  HalTransactionDetails:
    x-definition-type: Hal
    description: HYPERMEDIA structure used for returning the details of a given transaction
    type: object
    required:
      - details
      - _links
    properties:
      details:
        description: Details of the transactions
        type: array
        items:
          type: string
      _links:
        $ref: "#/definitions/TransactionDetailsLinks"
    example: |-
      {
        "details": [
          "First detail",
          "Second detail"
        ],
        "links": {
          "transactions": {
            "href": "/v1/accounts"
          },
          "accounts": {
            "href": "/v1/accounts"
          }
        }
      }
  Period:
    description: definition of a time period
    type: object
    properties:
      startDate:
        $ref: "#/definitions/StartDate"
      endDate:
        $ref: "#/definitions/EndDate"
    example: "{\n  \"startDate\": \"2021-08-01T00:00+02:00\",\n  \"endDate\": \"2021-08-31T00:00+02:00\"\n}    "
  TransactionDetailsLinks:
    x-definition-type: Hal
    description: |
      links that can be used after retrieving details on a given transaction
      | Link | Description |
      | ---- | ----------- |
      | transactions | link to the transaction list |
      | accounts | link to the list of all available accounts |
    type: object
    readOnly: true
    properties:
      transactions:
        $ref: "#/definitions/GenericLink"
      accounts:
        $ref: "#/definitions/GenericLink"
    example: "{\n  \"transactions\": {\n    \"href\": \"/v1/accounts/Alias1/transactions\"\n  },\n  \"accounts\": {\n    \"href\": \"/v1/accounts\"\n  }\n}    "
  TransactionLinks:
    x-definition-type: Hal
    description: |
      links that can be used for further retrieving details on a given transaction
      | Link | Description |
      | ---- | ----------- |
      | details | link to the details of the transaction |
    type: object
    readOnly: true
    properties:
      details:
        $ref: "#/definitions/GenericLink"
    example: "{\n  \"details\": {\n    \"href\": \"/v1/accounts/Alias1/transactions/Transaction1/details\"\n  }\n}\n    "
parameters:
  AccountResourceIdentification:
    name: accountResourceId
    description: Identification of account resource to fetch
    in: path
    type: string
    pattern: '^([a-zA-Z0-9_ /\-?:\()\.,'']{1,100})$'
    required: true
  PaymentRequestResourceIdentification:
    name: paymentRequestResourceId
    description: Identification of the Payment Request Resource
    in: path
    type: string
    pattern: '^([a-zA-Z0-9_ /\-?:\()\.,'']{1,100})$'
    required: true
  FromEntryReference:
    name: entryReferenceFrom
    description: |
      Specifies the value on which the result has to be computed.

      Only the transaction having a technical identification greater than this value must be included within the result
    in: query
    type: string
    maxLength: 40
    required: false
  ToEntryReference:
    name: entryReferenceto
    description: |
      Specifies the value on which the result has to be computed.

      Only the transaction having a technical identification less than or equal to this value must be included within the result
    in: query
    type: string
    maxLength: 40
    required: false
  ToImputationDate:
    name: dateTo
    description: |
      Exclusive maximal imputation date of the transactions.

      Transactions having an imputation date equal to this parameter are not included within the result.
    in: query
    type: string
    format: date-time
    required: false
  FromImputationDate:
    name: dateFrom
    description: |
      Inclusive minimal imputation date of the transactions.

      Transactions having an imputation date equal to this parameter are included within the result.
    in: query
    type: string
    format: date-time
    required: false
  DateType:
    name: dateType
    description: |
      This parameter specifies the type of date on which [dateFrom] and [dateTo] apply.
      If not provided, the ASPSP will use its own default date type as specified in its implementation documentation.
      The implementation documentation must also specify which date types are supported.
    in: query
    type: string
    enum:
      - transactionDate
      - bookingDate
    required: false
  UiLocales:
    name: ui_locales
    description: |
      End-User's preferred languages and scripts for the user interface, represented as a space-separated list of BCP47 [RFC5646] language tag values, ordered by preference.
    in: query
    type: string
    maxLength: 140
    required: false
  Workspace:
    name: workspace
    description: |
      Workspace to be used for processing an AISP request.
      If not provided, the default workspace is computed from the authentication that was used for getting the OAuth2 Access Token.
    in: query
    type: string
    maxLength: 32
  AuthorizationParameter:
    name: Authorization
    description: Access token to be passed as a header
    in: header
    type: string
    required: true
  PsuIpAddressHeader:
    name: PSU-IP-Address
    description: IP address used by the PSU's terminal when connecting to the TPP
    in: header
    type: string
  PsuIpPortHeader:
    name: PSU-IP-Port
    description: IP port used by the PSU's terminal when connecting to the TPP
    in: header
    type: string
  PsuHttpMethodHeader:
    name: PSU-HTTP-Method
    description: Http method for the most relevant PSU's terminal request to the TTP
    in: header
    type: string
  PsuDateHeader:
    name: PSU-Date
    description: Timestamp of the most relevant PSU's terminal request to the TTP
    in: header
    type: string
  PsuGeoLocation:
    name: PSU-GEO-Location
    description: Geographical location of the PSU as provided by the PSU mobile terminal if any to the TPP
    in: header
    type: string
  PsuUserAgentHeader:
    name: PSU-User-Agent
    description: |
      "User-Agent" header field sent by the PSU terminal when connecting to the TPP
    in: header
    type: string
  PsuRefererHeader:
    name: PSU-Referer
    description: |
      "Referer" header field sent by the PSU terminal when connecting to the TPP.
      Notice that an initial typo in RFC 1945 specifies that "referer" (incorrect spelling) is to be used. The correct spelling "referrer" can be used but might not be understood.
    in: header
    type: string
  PsuAcceptHeader:
    name: PSU-Accept
    description: |
      "Accept" header field sent by the PSU terminal when connecting to the TPP
    in: header
    type: string
  PsuAcceptCharsetHeader:
    name: PSU-Accept-Charset
    description: |
      "Accept-Charset" header field sent by the PSU terminal when connecting to the TPP
    in: header
    type: string
  PsuAcceptEncodingHeader:
    name: PSU-Accept-Encoding
    description: |
      "Accept-Encoding" header field sent by the PSU terminal when connecting to the TPP
    in: header
    type: string
  PsuAcceptLanguageHeader:
    name: PSU-Accept-Language
    description: |
      "Accept-Language" header field sent by the PSU terminal when connecting to the TPP
    in: header
    type: string
  PsuDeviceId:
    name: PSU-Device-ID
    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 installation identification this ID need to be unaltered until removal from device.
    in: header
    type: string
  DigestHeader:
    name: Digest
    description: Digest of the body
    in: header
    type: string
    required: false
  SignatureHeader:
    x-comments:
      - Modified for CR408 (Implementation of Json Web Signature Profile)
    name: Signature
    description: |
      [http-signature of the request](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
      The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
    in: header
    type: string
    required: false
  Correlation:
    name: X-Request-ID
    description: |
      Correlation header to be set in a request and retrieved in the relevant response
    in: header
    type: string
    maxLength: 70
    required: true
  PaymentRequest:
    name: paymentRequest
    description: ISO20022 based payment Initiation Request
    in: body
    required: true
    schema:
      $ref: "#/definitions/PaymentRequestResource"
  Confirmation:
    name: confirmationRequest
    description: |
      Parameters needed for confirmation of the Payment Request.
      Even though there is no parameter, a Json (void) body structure must be provided.
    in: body
    required: true
    schema:
      $ref: "#/definitions/ConfirmationResource"
  PaymentCoverageRequest:
    name: paymentCoverage
    description: parameters of a payment coverage request
    in: body
    required: true
    schema:
      $ref: "#/definitions/PaymentCoverageRequestResource"
  Consents:
    name: access
    description: List of consents granted to the AISP by the PSU.
    in: body
    required: true
    schema:
      $ref: "#/definitions/Access"
  TransactionResourceIdentification:
    name: transactionResourceId
    description: Identification of transaction resource to fetch
    in: path
    type: string
    pattern: '^([a-zA-Z0-9_ /\-?:\()\.,'']{1,100})$'
    required: true
  PsuWorkspace:
    name: PSU-Workspace
    description: |
      Workspace to be used for processing the PSU authentication when confirming a PISP request.
    in: header
    type: string
    maxLength: 32
  IdempotencyHeader:
    x-comments:
      - Added for CR526 (Add an Idempotency Header)
    name: Idempotency-Key
    description: Key provided by the API client to ensure idempotency in case of retry of a given request
    in: header
    type: string
    format: uuid
    required: true
  JwSignatureHeader:
    x-comments:
      - Added for CR408 (Implementation of Json Web Signature Profile)
    name: X-JWS-Signature
    description: |
      [JSON WEB signature of the request](https://www.openbankingeurope.eu/media/2095/obe-json-web-signature-profile-for-open-banking.pdf)
    in: header
    type: string
    required: false
