openapi: 3.0.0
info:
  title: UAE Account Information API
  description: '## UAE Open Finance Account Information API Specification'
  version: v2.2-rc1
servers:
  - url: /open-finance/account-information/v2.2
tags:
  - name: Bank Data Sharing Consent
    description: Consents for Bank Data Sharing
  - name: Accounts
    description: Accounts Resource
  - name: Balances
    description: Balances Resource
  - name: Beneficiaries
    description: Beneficiaries Resource
  - name: Direct Debits
    description: Direct Debits Resource
  - name: Product
    description: Product Resource
  - name: Scheduled Payments
    description: Scheduled Payments Resource
  - name: Standing Orders
    description: Standing Orders Resource
  - name: Transactions
    description: Transactions Resource
  - name: Parties
    description: Parties Resource
  - name: Statements
    description: Statements Resource
paths:
  /account-access-consents:
    get:
      tags:
        - Bank Data Sharing Consent
      summary: Retrieve Bank Data Sharing Consents by BaseConsentId
      description: Retrieve all Bank Data Sharing Consents for a given `BaseConsentId`
      operationId: GetAccountAccessConsentsByBaseConsentId
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/baseConsentId'
      responses:
        '200':
          $ref: '#/components/responses/200BaseConsentIdConsentsRetrieve'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '415':
          $ref: '#/components/responses/415Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - TPPOAuth2Security:
            - openid
            - accounts
  /account-access-consents/{ConsentId}:
    get:
      tags:
        - Bank Data Sharing Consent
      summary: Retrieve Bank Data Sharing Consent by ConsentId
      description: Retrieve Bank Data Sharing Consents for a given `ConsentId`
      operationId: GetAccountAccessConsentsConsentId
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/ConsentId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountAccessConsentsConsentIdRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - TPPOAuth2Security:
            - openid
            - accounts
    patch:
      tags:
        - Bank Data Sharing Consent
      summary: Patch Consent
      description: Update a Bank Data Sharing Consent Status or Webhook Subscription
      operationId: PatchAccountAccessConsentsConsentId
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/ConsentId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      requestBody:
        description: Request Body
        content:
          application/json; charset=utf-8:
            schema:
              $ref: '#/components/schemas/AEPatchConsent'
          application/json:
            schema:
              $ref: '#/components/schemas/AEPatchConsent'
          application/jwt:
            schema:
              $ref: '#/components/schemas/AEPatchConsentSigned'
      responses:
        '204':
          $ref: '#/components/responses/204AccountAccessConsentsConsentIdDeleted'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '415':
          $ref: '#/components/responses/415Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - TPPOAuth2Security:
            - openid
            - accounts
  /account-access-consents/{ConsentId}/attestations:
    get:
      operationId: ReadAccountAccessConsentAttestations
      summary: Retrieve attestations
      description: |-
        Retrieve the Attestation Events recorded against a consent for a given `ConsentId`.

        All successfully recorded Attestation Events are returned, each carrying a copy of the
        Attestation submitted by the TPP. Where the TPP has submitted more than one Attestation
        for the consent, only the last successfully recorded Attestation is reported on.

        The `LastSubmitted` parameter can be used to retrieve only the last successfully recorded
        Attestation Event.
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/ConsentId'
        - $ref: '#/components/parameters/LastSubmitted'
      responses:
        '200':
          description: The request has succeeded.
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation ID.
              schema:
                type: string
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/AETPPAttestations1Response'
            application/json:
              schema:
                $ref: '#/components/schemas/AETPPAttestations1Response'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '415':
          $ref: '#/components/responses/415Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      tags:
        - Bank Data Sharing Consent
      security:
        - TPPOAuth2Security:
            - accounts
    post:
      operationId: CreateAccountAccessConsentAttestation
      summary: Create an attestation
      description: |-
        Create an Attestation against a consent for a given `ConsentId`.

        The consent must be in the `Revoked` or `Expired` terminal status. Each Attestation Event
        is an atomic event that is not correlated with other Attestation Events of the same type.
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/ConsentId'
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation ID.
              schema:
                type: string
          content:
            application/jwt:
              schema:
                $ref: '#/components/schemas/AETPPAttestationSigned1Response'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '415':
          $ref: '#/components/responses/415Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      tags:
        - Bank Data Sharing Consent
      requestBody:
        required: true
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/AECreateTPPAttestationSigned1Request'
      security:
        - TPPOAuth2Security:
            - accounts
  /accounts:
    get:
      tags:
        - Accounts
      summary: Get Accounts
      description: |
        The following permissions are applicable to this resource:   

        * ReadAccountsBasic

        * ReadAccountsDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccounts
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}:
    get:
      tags:
        - Accounts
      summary: Get an Account
      description: |
        The following permissions are applicable to this resource:          

        * ReadAccountsBasic

        * ReadAccountsDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountId
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/balances:
    get:
      tags:
        - Balances
      summary: Get Balances
      description: |
        The following permissions are applicable to this resource:

        * ReadBalances

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdBalances
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdBalancesRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/beneficiaries:
    get:
      tags:
        - Beneficiaries
      summary: Get Beneficiaries
      description: |
        The following permissions are applicable to this resource:

        * ReadBeneficiariesBasic

        * ReadBeneficiariesDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdBeneficiaries
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdBeneficiariesRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/direct-debits:
    get:
      tags:
        - Direct Debits
      summary: Get Direct Debits
      description: |
        The following permissions are applicable to this resource:          

        * ReadDirectDebits

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdDirectDebits
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdDirectDebitsRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/product:
    get:
      tags:
        - Product
      summary: Get Product for an Account
      description: |
        The following permissions are applicable to this resource:

        * ReadProduct

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdProduct
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdProductRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/scheduled-payments:
    get:
      tags:
        - Scheduled Payments
      summary: Get Scheduled Payments
      description: |
        The following permissions are applicable to this resource:

        * ReadScheduledPaymentsBasic

        * ReadScheduledPaymentsDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetScheduledPayments
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdScheduledPaymentsRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/standing-orders:
    get:
      tags:
        - Standing Orders
      summary: Get Standing Orders
      description: |
        The following permissions are applicable to this resource:

        * ReadStandingOrdersBasic
        
        * ReadStandingOrdersDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdStandingOrders
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdStandingOrdersRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '404':
          $ref: '#/components/responses/404Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/transactions:
    get:
      tags:
        - Transactions
      summary: Get Transactions
      description: |
        The following permissions are applicable to this resource:

        * ReadTransactionsBasic

        * ReadTransactionsDetail

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountsAccountIdTransactions
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/FromBookingDateTimeParam'
        - $ref: '#/components/parameters/ToBookingDateTimeParam'
      responses:
        '200':
          $ref: '#/components/responses/200AccountsAccountIdTransactionsRead'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /accounts/{AccountId}/parties:
    get:
      tags:
        - Parties
      operationId: PartiesByAccountId_read
      summary: Get Parties for an Account
      description: |-
        The following permissions are applicable to this resource:

        * ReadParty
        
        * ReadPartyUser
        
        * ReadPartyUserIdentity

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: The request has succeeded.
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation id.
              schema:
                type: string
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/AEReadParty2'
            application/json:
              schema:
                $ref: '#/components/schemas/AEReadParty2'
            application/jwt:
              schema:
                $ref: '#/components/schemas/AEReadParty2Signed'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
  /parties:
    get:
      tags:
        - Parties
      operationId: Parties_read
      summary: Get Parties
      description: >
        The following permissions are applicable to this resource:

        * ReadParty
        
        * ReadPartyUser
        
        * ReadPartyUserIdentity

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
      responses:
        '200':
          description: The request has succeeded.
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation id.
              schema:
                type: string
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/AEReadParty4'
            application/json:
              schema:
                $ref: '#/components/schemas/AEReadParty4'
            application/jwt:
              schema:
                $ref: '#/components/schemas/AEReadParty4Signed'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts

  # Extended Product Enhancement

  /accounts/{AccountId}/statements:
    get:
      tags:
        - Statements
      summary: Get Statements
      description: >
        The following permissions are applicable to this resource:

        * ReadStatements

        Refer to the Permissions and Data Clusters section of the Customer Data page for further information.
      operationId: GetAccountAccountIdStatements
      parameters:
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/x-fapi-auth-date'
        - $ref: '#/components/parameters/x-fapi-customer-ip-address'
        - $ref: '#/components/parameters/x-fapi-interaction-id'
        - $ref: '#/components/parameters/x-customer-user-agent'
        - in: query
          name: fromStatementDate
          description: Start date for filtering of the Statements on the Statements.OpeningDate field. If this is not 
            populated, the start date will be open ended
          schema:
            type: string
            format: date
        - in: query
          name: toStatementDate
          description: End date for filtering of the Statements on the Statement.OpeningDate.  If this is not populated,
            the end date will be open ended
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Return statements
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/AEReadStatements'
            application/json:
              schema:
                $ref: '#/components/schemas/AEReadStatements'
            application/jwt:
              schema:
                $ref: '#/components/schemas/AEReadStatementsSigned'
        '400':
          $ref: '#/components/responses/400Error'
        '401':
          $ref: '#/components/responses/401Error'
        '403':
          $ref: '#/components/responses/403Error'
        '405':
          $ref: '#/components/responses/405Error'
        '406':
          $ref: '#/components/responses/406Error'
        '429':
          $ref: '#/components/responses/429Error'
        '500':
          $ref: '#/components/responses/500Error'
      security:
        - UserOAuth2Security:
            - openid
            - accounts
components:
  headers:
    x-fapi-interaction-id:
      required: true
      description: An RFC4122 UID used as a correlation id.
      schema:
        type: string
      example: 49df2c2c-6b80-40ee-96a1-71910a248048
  responses:
    400Error:
      description: Bad request
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEError400Response'
        application/json:
          schema:
            $ref: '#/components/schemas/AEError400Response'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError400ResponseSigned'
    401Error:
      description: Unauthorized
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    403Error:
      description: Forbidden
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEError403Response'
        application/json:
          schema:
            $ref: '#/components/schemas/AEError403Response'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError403ResponseSigned'
    404Error:
      description: Not found
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    405Error:
      description: Method Not Allowed
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    406Error:
      description: Not Acceptable
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    415Error:
      description: Unsupported Media Type
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    429Error:
      description: Too Many Requests
      headers:
        Retry-After:
          description: Number in seconds to wait
          schema:
            type: integer
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
    500Error:
      description: Internal Server Error
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEError500Response'
        application/json:
          schema:
            $ref: '#/components/schemas/AEError500Response'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError500ResponseSigned'
    200AccountsAccountIdDirectDebitsRead:
      description: Direct Debits Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadDirectDebit'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadDirectDebit'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadDirectDebitSigned'
    200AccountsAccountIdStandingOrdersRead:
      description: Standing Orders Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadStandingOrder'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadStandingOrder'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadStandingOrderSigned'
    200AccountsAccountIdScheduledPaymentsRead:
      description: Scheduled Payments Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadScheduledPayment'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadScheduledPayment'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadScheduledPaymentSigned'
    200AccountsAccountIdBeneficiariesRead:
      description: Beneficiaries Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadBeneficiary'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadBeneficiary'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadBeneficiarySigned'
    200AccountsAccountIdTransactionsRead:
      description: Transactions Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadTransaction'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadTransaction'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadTransactionSigned'
    200AccountsAccountIdProductRead:
      description: Product Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadProduct1'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadProduct1'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadProduct1Signed'
    200AccountsAccountIdBalancesRead:
      description: Balances Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadBalance'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadBalance'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadBalanceSigned'
    200AccountsAccountIdRead:
      description: Account ID Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadAccountId'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadAccountId'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadAccountIdSigned'
    204AccountAccessConsentsConsentIdDeleted:
      description: No Content
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
    200AccountAccessConsentsConsentIdRead:
      description: Bank Data Sharing Consents Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingConsentPropertiesV21'
        application/json:
          schema:
            $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingConsentPropertiesV21'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadConsentResponseSigned'
    200AccountsRead:
      description: Accounts Read
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEReadAccount'
        application/json:
          schema:
            $ref: '#/components/schemas/AEReadAccount'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEReadAccountSigned'
    200BaseConsentIdConsentsRetrieve:
      description: Retrieve Bank Data Sharing Consents by BaseConsentId
      headers:
        x-fapi-interaction-id:
          description: An RFC4122 UID used as a correlation id.
          required: true
          schema:
            type: string
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/AEConsentsByBaseConsentIdResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/AEConsentsByBaseConsentIdResponse'
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEConsentsByBaseConsentIdResponseSigned'
  schemas:
    Jwt:
      description: |
        [https://www.rfc-editor.org/rfc/rfc7519](https://www.rfc-editor.org/rfc/rfc7519)
      type: object
      properties:
        iss:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)
          type: string
        exp:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)
          type: number
        nbf:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)
          type: number
        aud:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)
          type: array
          items:
            type: string
        iat:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)
          type: number
      required:
        - iss
        - exp
        - nbf
    AEReadConsentResponseSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingConsentPropertiesV21'
          required:
            - message
          additionalProperties: false
    AEConsentsByBaseConsentIdResponseSigned:
      description: |
        Payment Consents By BaseConsentId Response Signed Schema
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              type: array
              items:
                $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingConsentPropertiesV21'
          required:
            - message
          additionalProperties: false
    AEReadAccountSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadAccount'
          required:
            - message
          additionalProperties: false
    AEReadAccountIdSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadAccountId'
          required:
            - message
          additionalProperties: false
    AEReadBalanceSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadBalance'
          required:
            - message
          additionalProperties: false
    AEReadBeneficiarySigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadBeneficiary'
          required:
            - message
          additionalProperties: false
    AEReadDirectDebitSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadDirectDebit'
          required:
            - message
          additionalProperties: false
    AEReadProduct1Signed:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadProduct1'
          required:
            - message
          additionalProperties: false
    AEReadScheduledPaymentSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadScheduledPayment'
          required:
            - message
          additionalProperties: false
    AEReadStandingOrderSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadStandingOrder'
          required:
            - message
          additionalProperties: false
    AEReadTransactionSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadTransaction'
          required:
            - message
          additionalProperties: false
    AEReadStatementsSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEReadStatements'
          required:
            - message
          additionalProperties: false
    EventNotification:
      type: object
      description: |
        A Webhook Subscription Schema
      required:
        - Webhook
      properties:
        Webhook:
          description: |
            A Webhook Schema
          type: object
          properties:
            Url:
              description: |
                The TPP Callback URL being registered with the LFI
              type: string
              example: https://api.tpp.com/webhook/callbackUrl
            IsActive:
              description: >
                The TPP specifying whether the LFI should send (IsActive true) or not send (IsActive false) Webhook
                Notifications to the TPP's Webhook URL
              type: boolean
              example: false
          additionalProperties: false
      additionalProperties: false
    AEError400ResponseSigned:
      description: |
        Error Signed Schema
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEError400Response'
          required:
            - message
    AEError403ResponseSigned:
      description: |
        Error Signed Schema
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEError403Response'
          required:
            - message
    AEError500ResponseSigned:
      description: |
        Error Signed Schema
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEError500Response'
          required:
            - message
    AEError400Response:
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
      type: object
      properties:
        Errors:
          items:
            $ref: '#/components/schemas/AEError400'
          type: array
          minItems: 1
      required:
        - Errors
      additionalProperties: false
    AEError403Response:
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
      type: object
      properties:
        Errors:
          items:
            $ref: '#/components/schemas/AEError403'
          type: array
          minItems: 1
      required:
        - Errors
      additionalProperties: false
    AEError500Response:
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
      type: object
      properties:
        Errors:
          items:
            $ref: '#/components/schemas/AEError500'
          type: array
          minItems: 1
      required:
        - Errors
      additionalProperties: false
    AEMessage:
      type: string
      minLength: 1
      maxLength: 500
      description: >-
        A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or
        'RequestedExecutionDateTime must be in future'

        This field is not standardised
    AEError400:
      description: Error
      type: object
      required:
        - Code
        - Message
      additionalProperties: false
      properties:
        Code:
          $ref: '#/components/schemas/AEError400Code'
        Message:
          $ref: '#/components/schemas/AEMessage'
        Path:
          description: >-
            Recommended but optional reference to the JSON Path of the field with error, e.g.,
            Data.Initiation.InstructedAmount.Currency
          type: string
          minLength: 1
          maxLength: 500
        Url:
          description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
          type: string
    AEError400Code:
      description: >-
        Error Code. This may either be one of the prescribed Error Code(s) or a namespaced Error Code where the
        namespace is the system or organisation that has responded with the error, and the code is the code specific to
        the system or organisation.
      type: string
      anyOf:
        - enum:
            - Consent.Invalid
            - Consent.BusinessRuleViolation
            - Consent.FailsControlParameters
            - Consent.InvalidUserIdentifier
            - JWS.InvalidSignature
            - JWS.Malformed
            - JWS.InvalidClaim
            - JWS.InvalidHeader
            - JWE.DecryptionError
            - JWE.InvalidHeader
            - GenericRecoverableError
            - GenericError
            - Event.UnexpectedEvent
            - Body.InvalidFormat
            - Resource.InvalidFormat
        - pattern: ^[A-Za-z]+\.[A-Za-z0-9]+$
    AEError403:
      description: Error
      type: object
      required:
        - Code
        - Message
      additionalProperties: false
      properties:
        Code:
          $ref: '#/components/schemas/AEError403Code'
        Message:
          $ref: '#/components/schemas/AEMessage'
        Path:
          description: >-
            Recommended but optional reference to the JSON Path of the field with error, e.g.,
            Data.Initiation.InstructedAmount.Currency
          type: string
          minLength: 1
          maxLength: 500
        Url:
          description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
          type: string
    AEError403Code:
      description: >-
        Error Code. This may either be one of the prescribed Error Code(s) or a namespaced Error Code where the
        namespace is the system or organisation that has responded with the error, and the code is the code specific to
        the system or organisation.
      type: string
      anyOf:
        - enum:
            - AccessToken.InvalidScope
            - Consent.TransientAccountAccessFailure
            - Consent.AccountTemporarilyBlocked
            - Consent.PermanentAccountAccessFailure
            - GenericRecoverableError
            - GenericError
        - pattern: ^[A-Za-z]+\.[A-Za-z0-9]+$
    AEError500:
      description: Error
      type: object
      required:
        - Code
        - Message
      additionalProperties: false
      properties:
        Code:
          $ref: '#/components/schemas/AEError500Code'
        Message:
          $ref: '#/components/schemas/AEMessage'
        Path:
          description: >-
            Recommended but optional reference to the JSON Path of the field with error, e.g.,
            Data.Initiation.InstructedAmount.Currency
          type: string
          minLength: 1
          maxLength: 500
        Url:
          description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
          type: string
    AEError500Code:
      description: >-
        Error Code. This may either be one of the prescribed Error Code(s) or a namespaced Error Code where the
        namespace is the system or organisation that has responded with the error, and the code is the code specific to
        the system or organisation.
      type: string
      anyOf:
        - enum:
            - GenericRecoverableError
            - GenericError
        - pattern: ^[A-Za-z]+\.[A-Za-z0-9]+$
    Links:
      description: Links relevant to the resource
      required:
        - Self
      properties:
        Self:
          $ref: '#/components/schemas/Self'
        First:
          $ref: '#/components/schemas/First'
        Prev:
          $ref: '#/components/schemas/Prev'
        Next:
          $ref: '#/components/schemas/Next'
        Last:
          $ref: '#/components/schemas/Last'
      additionalProperties: false
    MetaTotalPages:
      description: Meta Data relevant to the resource
      type: object
      required:
        - TotalPages
      properties:
        TotalPages:
          $ref: '#/components/schemas/TotalPages'
      additionalProperties: false
    MetaTransactionsStatements:
      description: Meta Data relevant to the resource
      type: object
      required:
        - TotalPages
      properties:
        TotalPages:
          $ref: '#/components/schemas/TotalPages'
        FirstAvailableDateTime:
          $ref: '#/components/schemas/ISODateTime'
        LastAvailableDateTime:
          $ref: '#/components/schemas/ISODateTime'
      additionalProperties: false
    Self:
      description: A link to the current resource
      type: string
      format: uri
    First:
      description: A link to the first page in a paginated result set
      type: string
      format: uri
    Prev:
      description: A link to the previous page in a paginated result set
      type: string
      format: uri
    Next:
      description: A link to the next page in a paginated result set
      type: string
      format: uri
    Last:
      description: A link to the last page in a paginated result set
      type: string
      format: uri
    TotalPages:
      description: Total number of Pages where a result set is paginated
      type: integer
      format: int32
      minimum: 0
    TransactionDateTime:
      description: |
        The Date Time of when the transaction occurred.
        All dates in the JSON payloads are represented in ISO 8601 date-time format. 
        All date-time fields in responses must include the timezone. 
        An example is below: 2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    PaymentMode:
      description: The mode of payment
      type: string
      enum:
        - Online
        - Offline
        - Batch
    TransactionType:
      description: The type of transaction
      type: string
      enum:
        - POS
        - ECommerce
        - ATM
        - BillPayments
        - LocalBankTransfer
        - SameBankTransfer
        - InternationalTransfer
        - Teller
        - Cheque
        - Other
    SubTransactionType:

      # Extended Product Data Enhancement

      $ref: '#/components/schemas/AESubTransactionType'
    Flags:
      description: The flag of a transaction
      type: string
      enum:
        - Cashback
        - Payroll
        - DirectDebit
        - StandingOrder
        - Finance
        - Dividend
        - OpenFinance
    AccountHolderName:
      type: string
      description: >
        * /accounts resource

        The Account Holder Name is the name or names of the Account owner(s) represented at the account level


        * /accounts/{AccountId} resource

        The Account Holder Name is the name or names of the Account owner(s) represented at the account level


        * /beneficiaries resource

        The Account Holder Name is the name or names of the Beneficiary account owner(s) represented at the account
        level, as displayed by the Creditor Agent's online channels and as provided by the Beneficiary to the User 1
        when adding the Beneficiary in the Beneficiary list. 

        Note, the Account Holder Name is not the product name or the nickname of the account.              


        * /scheduled-payments resource

        The Account Holder Name is the name or names of the Beneficiary account owner(s) represented at the account
        level, as displayed by the Creditor Agent's online channels and as provided by the Beneficiary to the User 1
        when adding the Beneficiary in the Beneficiary list. 

        Note, the Account Holder Name is not the product name or the nickname of the account.              


        * /standing-orders resource

        The Account Holder Name is the name or names of the Beneficiary account owner(s) represented at the account
        level, as displayed by the Creditor Agent's online channels and as provided by the Beneficiary to the User 1
        when adding the Beneficiary in the Beneficiary list. 

        Note, the Account Holder Name is not the product name or the nickname of the account.
    AccountHolderShortName:
      type: string
      description: |
        * /accounts resource
        The Account holder nick name

        * /accounts/{AccountId} resource
        The Account holder nick name

        * /beneficiaries resource
        The Beneficiary account holder nick name

        * /scheduled-payments resource
        The Beneficiary account holder nick name

        * /standing-orders resource
        The Beneficiary account holder nick name
    StatementReference:
      description: Unique reference for the statement. This reference may be optionally populated if available.
      type: string
      minLength: 1
      maxLength: 35
    LocalTimeZone:
      description: |
        The UTC offset of the local date and time of where the transaction occurred
        E.g. UTC+03:00
      type: string
      example: UTC+03:00
      pattern: ^UTC[+-]([01]\d|2[0-4])(:?[0-5]\d)?$
    ISODateTime:
      description: |-
        All dates in the JSON payloads are represented in ISO 8601 date-time format. 
        All date-time fields in responses must include the timezone. An example is below:
        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    StandingOrderId:
      description: >-
        A unique and immutable identifier produced by the LFI to identify the account resource. This identifier has no
        meaning to the account owner.
      type: string
      minLength: 1
      maxLength: 40
    StandingOrderType:
      description: The type of Standing Order.
      type: string
      enum:
        - BetweenMyAccounts
        - SameBankTransfer
        - LocalBankTransfer
        - InternationalTransfer
        - Charity
    Frequency:
      type: string
      minLength: 1
      maxLength: 35
      description: >
        * The frequency that the Standing Order payments are executed from the User1s account. Encoded with allowable
        values as follows:


        * Individual Definitions:

        NotKnown - SO frequency is not known (i.e. not provided) 

        EveryDay - SO frequency is Every day

        EveryWorkingDay - SO frequency is every working day 

        IntervalDay - SO frequency is an interval specified in number of calendar days (2 to 31) 

        IntervalWeekDay - SO frequency is an interval specified in weeks (1 to 51), and the day within the week (1 to
        7) 

        WeekInMonthDay - SO frequency is a monthly interval, specifying the week of the month (1 to 5) and day within
        the week (1 to 7) 

        IntervalMonthDay - SO frequency is an interval specified in months (between 1 to 6, 12, 24), specifying the day
        within the month (-5 to -1, 1 to 31) 

        QuarterDay - SO frequency is quarterly RECEIVED

        BiAnnual - SO frequency is every 6 months

        Annual - SO frequency is every year

        RECEIVED = Paid on the 20th March, 19th June, 24th September and 20th December. 


        * Individual Patterns:

        NotKnown (ScheduleCode)

        EveryDay (ScheduleCode)

        EveryWorkingDay (ScheduleCode)

        IntervalDay:NoOfDay (ScheduleCode + NoOfDay)

        IntervalWeekDay:IntervalInWeeks:DayInWeek (ScheduleCode + IntervalInWeeks + DayInWeek)

        WeekInMonthDay:WeekInMonth:DayInWeek (ScheduleCode + WeekInMonth + DayInWeek)

        IntervalMonthDay:IntervalInMonths:DayInMonth (ScheduleCode + IntervalInMonths + DayInMonth)

        QuarterDay: + either (RECEIVED) ScheduleCode + QuarterDay


        * The regular expression for this element combines five smaller versions for each permitted pattern. To aid
        legibility - the components are presented individually here:

        NotKnown

        EveryDay

        EveryWorkingDay

        IntervalDay:(([2-9])|([1-2][0-9])|3[0-1])

        IntervalWeekDay:[1-51]:[1-7]

        WeekInMonthDay:[1-5]:[1-7]

        IntervalMonthDay:([1-6]|12|24):(-[1-5]|[1-9]|[12][0-9]|3[01])

        QuarterDay:(RECEIVED)


        * Full Regular Expression:

        ^(NotKnown)$|^(EveryDay)$|^(EveryWorkingDay)$|^(IntervalDay:(([2-9])|([1-2][0-9])|3[0-1]))$|^(IntervalWeekDay:[1-51]:[1-7])$|^(WeekInMonthDay:[1-5]:[1-7])$|^(IntervalMonthDay:([1-6]|12|24):(-[1-5]|[1-9]|[12][0-9]|3[01]))$|^(QuarterDay:(RECEIVED))$"

        type: "string"

        pattern:
        "^(NotKnown)$|^(EveryDay)$|^(EveryWorkingDay)$|^(IntervalDay:(([2-9])|([1-2][0-9])|3[0-1]))$|^(IntervalWeekDay:[1-51]:[1-7])$|^(WeekInMonthDay:[1-5]:[1-7])$|^(IntervalMonthDay:([1-6]|12|24):(-[1-5]|[1-9]|[12][0-9]|3[01]))$|^(QuarterDay:(RECEIVED))$"
    PurposeSO:
      description: |
        The purpose of the Standing Order payment.
        A free format string in the form of transaction categorisation.
        Example: "Bills and expenses", "Government payment", "Personal Expenses".
      type: string
      minLength: 1
      maxLength: 50
    FirstPaymentDateTime:
      description: >-
        The date on which the first payment for a Standing Order schedule will be made.All dates in the JSON payloads
        are represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    NextPaymentDateTime:
      description: >-
        The date on which the next payment for a Standing Order schedule will be made.All dates in the JSON payloads are
        represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    LastPaymentDateTime:
      description: >-
        The date on which the last (most recent) payment for a Standing Order schedule was made.All dates in the JSON
        payloads are represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    FinalPaymentDateTime:
      description: >-
        The date on which the final payment for a Standing Order schedule will be made.All dates in the JSON payloads
        are represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    NumberOfPayments:
      description: >-
        Number of the payments that will be made in completing this frequency sequence including any executed since the
        sequence start date.
      type: string
      minLength: 1
      maxLength: 35
    AEExternalStandingOrderStatusCode:
      description: Specifies the status of the standing order in code form.
      type: string
      enum:
        - Active
        - Inactive
    DirectDebitId:
      description: >-
        A unique and immutable identifier used to identify the direct debit resource. This identifier has no meaning to
        the account owner.
      type: string
      minLength: 1
      maxLength: 256
    MandateIdentification:
      description: This is the unique and immutable reference to the User 1 for the Direct Debit mandate.
      type: string
      minLength: 1
      maxLength: 35
    AEExternalDirectDebitStatusCode:
      description: 'Specifies the status of the direct debit. Encoded with allowable values of: ''Active'', ''Inactive'''
      type: string
      enum:
        - Active
        - Inactive
    FrequencyDD:
      description: Specifies the frequency of the Direct Debit collections to the User 1 account.
      type: string
      enum:
        - Annual
        - Daily
        - Fortnightly
        - HalfYearly
        - Monthly
        - NotKnown
        - Quarterly
        - Weekly
    PreviousPaymentDateTime:
      description: >-
        The date of most recent direct debit collection to the User 1 account. All dates in the JSON payloads are
        represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    AEActiveOrHistoricCurrencyAndAmount_0:
      type: object
      required:
        - Amount
        - Currency
      description: This is the value of the last direct debit collection from the User 1 account.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_1:
      type: object
      required:
        - Amount
        - Currency
      description: >
        The amount of money that was moved between the User 1 (Debtor) and the payment beneficiary (Creditor) by the
        LFI, before adding any charges from the sending LFI.

        It is expressed in the currency as ordered by the User 1 (i.e. the initiating party of the payment). This amount
        is transported unchanged through the transaction chain.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_2:
      type: object
      required:
        - Amount
        - Currency
      description: The amount of the first Standing Order
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_3:
      type: object
      required:
        - Amount
        - Currency
      description: The amount of the next Standing Order.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_4:
      type: object
      required:
        - Amount
        - Currency
      description: The amount of the final Standing Order
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_5:
      type: object
      required:
        - Amount
        - Currency
      description: Amount of money in the transaction entry.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_6:
      type: object
      required:
        - Amount
        - Currency
      description: Transaction charges to be paid by the charge bearer.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
        ChargeIncluded:
          description: |
            If true then the value in the Amount has the ChargeAmount deducted from it
          type: boolean
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_7:
      type: object
      required:
        - Amount
        - Currency
      description: The amount of the last (most recent) Standing Order instruction.
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEActiveOrHistoricCurrencyAndAmount_8:
      type: object
      required:
        - Amount
        - Currency
      description: ' The VAT associated with the ChargeAmount'
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
      additionalProperties: false
    AEReadDirectDebit:
      description: List of Direct Debits for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - DirectDebit
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            DirectDebit:
              type: array
              items:
                $ref: '#/components/schemas/AEDirectDebit'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEDirectDebit:
      type: object
      description: Account to or from which a cash entry is made.
      required:
        - DirectDebitId
        - MandateIdentification
        - DirectDebitStatusCode
        - Name
        - Frequency
      properties:
        DirectDebitId:
          $ref: '#/components/schemas/DirectDebitId'
        MandateIdentification:
          $ref: '#/components/schemas/MandateIdentification'
        DirectDebitStatusCode:
          $ref: '#/components/schemas/AEExternalDirectDebitStatusCode'
        Name:
          $ref: '#/components/schemas/Name_2'
        Frequency:
          $ref: '#/components/schemas/FrequencyDD'
        PreviousPaymentDateTime:
          $ref: '#/components/schemas/PreviousPaymentDateTime'
        PreviousPaymentAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
      additionalProperties: false
    AEReadStandingOrder:
      description: List of Standing Orders for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - StandingOrder
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            StandingOrder:
              type: array
              items:
                $ref: '#/components/schemas/AEStandingOrder'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEStandingOrder:
      description: Standing Orders for a specific AccountId
      type: object
      required:
        - Frequency
        - StandingOrderId
        - FirstPaymentDateTime
        - StandingOrderStatusCode
        - FirstPaymentAmount
      properties:
        StandingOrderId:
          $ref: '#/components/schemas/StandingOrderId'
        AccountHolderName:
          $ref: '#/components/schemas/AccountHolderName'
        AccountHolderShortName:
          $ref: '#/components/schemas/AccountHolderShortName'
        StandingOrderType:
          $ref: '#/components/schemas/StandingOrderType'
        Frequency:
          $ref: '#/components/schemas/Frequency'
        CreditorReference:
          $ref: '#/components/schemas/Reference'
        Purpose:
          $ref: '#/components/schemas/PurposeSO'
        FirstPaymentDateTime:
          $ref: '#/components/schemas/FirstPaymentDateTime'
        NextPaymentDateTime:
          $ref: '#/components/schemas/NextPaymentDateTime'
        LastPaymentDateTime:
          $ref: '#/components/schemas/LastPaymentDateTime'
        FinalPaymentDateTime:
          $ref: '#/components/schemas/FinalPaymentDateTime'
        NumberOfPayments:
          $ref: '#/components/schemas/NumberOfPayments'
        StandingOrderStatusCode:
          $ref: '#/components/schemas/AEExternalStandingOrderStatusCode'
        FirstPaymentAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_2'
        NextPaymentAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_3'
        LastPaymentAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_7'
        FinalPaymentAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_4'
        CreditorAgent:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification5_1'
        CreditorAccount:
          type: array
          items:
            $ref: '#/components/schemas/AECashAccount5_0'
        SupplementaryData:
          $ref: '#/components/schemas/AESupplementaryData'
      additionalProperties: false
    AEReadStatements:
      description: List of Statements for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          $ref: '#/components/schemas/AEStatements'
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTransactionsStatements'
      additionalProperties: false
    AEBranchAndFinancialInstitutionIdentification5_1:
      type: object
      required:
        - SchemeName
        - Identification
      description: >
        Creditor Agent refers to the Financial Institution that manages the account on behalf of the scheduled payment
        beneficiary party, managing registration, booking of entries on the account, calculating balances on the account
        and providing information about the account. This is the servicing Financial Institution of the Beneficiary
        account.
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalFinancialInstitutionIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_1'
      additionalProperties: false
    DebtorReference:
      description: >
        Reference in the context of the User 1 (i.e. the Debtor) to refer to the payment transaction. 

        Usage: If available, the initiating party (i.e. Debtor) generates this reference for internal purposes (e.g. to
        enable reconciliation, refer to a PO, invoice etc). This field is captured by the LFI and is not transmitted via
        the payment rails to the Creditor of the payment.
      type: string
      minLength: 1
      maxLength: 35
    AEExternalScheduleTypeCode:
      description: |
        Specifies the type of scheduled payment date provided under ScheduledPaymentDateTime. 
          Encoded with allowable values of:
          "Arrival" - User1 specifies the date for the arrival of funds in the beneficiary (Creditor) account
          "Execution" - User1 specifies the date which the payment needs to be executed from the User 1 (Debtor) account.
      type: string
      enum:
        - Arrival
        - Execution
    ScheduledPaymentDateTime:
      description: >-
        Date (and time) information related to the scheduled payment (Arrival or Execution) based on the ScheduleType
        field. All dates in the JSON payloads are represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    ScheduledPaymentId:
      description: >-
        A unique and immutable identifier produced by the LFI to identify the scheduled payment resource. This
        identifier has no meaning to the account owner.
      type: string
      minLength: 1
      maxLength: 40
    BeneficiaryId:
      description: >-
        A unique and immutable identifier used to identify the beneficiary resource. This identifier has no meaning to
        the account owner.
      type: string
      minLength: 1
      maxLength: 40
    AEBeneficiaryTypeCode:
      description: >-
        Specifies the Beneficiary Type. Encoded with allowable values of: 'Activated' - Beneficiary has been added to
        the beneficiary list using SCA. 'NotActivated' - Beneficiary has been added to the beneficiary list without SCA
      type: string
      enum:
        - Activated
        - NotActivated
    AEBranchAndFinancialInstitutionIdentification6_0:
      type: object
      description: >-
        Party that manages the account on behalf of the account owner, that is manages the registration and booking of
        entries on the account, calculates balances on the account and provides information about the account.

        This is the servicer of the beneficiary account.
      required:
        - SchemeName
        - Identification
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalFinancialInstitutionIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_1'
        Name:
          $ref: '#/components/schemas/Name_1'
        PostalAddress:
          $ref: '#/components/schemas/AEPostalAddress'
      additionalProperties: false
    AECashAccount5_0:
      type: object
      required:
        - SchemeName
        - Identification
      description: Provides the details to identify the beneficiary account.
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalAccountIdentificationCode1'
        Identification:
          $ref: '#/components/schemas/Identification_0'
      additionalProperties: false
    AECashAccount6_0:
      type: object
      description: >
        Creditor account details available in case the transaction is a Debit transaction.

        These are optional because there are situations where this cannot be populated for the following Debit
        transactions:

        - cash withdrawals (no creditor account/agent)

        - cheques and DDs may not have this information at least during the process of clearing and sometimes (e.g. for
        agency banks) may not be reconciled ever

        - some corner situations with international payments 

        - for card payments (instead merchant information fields should be populated)
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalAccountIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_0'
        Name:
          $ref: '#/components/schemas/Name_0'
      additionalProperties: false
    AECashAccount6_1:
      type: object
      description: >
        Account details of the Debtor in case the transaction is a Credit transaction.


        These are optional because there are situations where this cannot be populated for the following Credit
        transactions

        - cash deposits (no creditor account/agent)

        - cheques and DDs may not have this information at least during the process of clearing and sometimes (e.g. for
        agency banks) may not be reconciled ever

        - some corner situations with international payments 

        - for refunds with card payments  (instead merchant information fields should be populated)
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalAccountIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_0'
        Name:
          $ref: '#/components/schemas/Name_0'
      additionalProperties: false
    Reference:
      description: >-
        Unique reference in the context of the creditor, provided by the creditor to the User1 (Debtor), to
        unambiguously refer to the payment transaction. Usage: If available, the initiating party (i.e. Debtor) provides
        this reference in the structured remittance information, to enable reconciliation by the Creditor upon receipt
        of the amount of money. This field is populated by the User 1 (who is the initiating party of the payment e.g.
        the Debtor). Field is free format text
      type: string
      minLength: 1
      maxLength: 35
    TransactionId:
      description: >-
        Unique identifier for the transaction within an servicing institution. This identifier is both unique and
        immutable.
      type: string
      minLength: 1
      maxLength: 210
    TransactionReference:
      description: |
        Unique reference for the transaction.
        When processed through a national payment system, it is mandatory to be populated by the LFI.
        As an example, it may be a reference code for the local payment scheme."
      type: string
      minLength: 1
      maxLength: 210
    AECreditDebitCode_1:
      description: Indicates whether the transaction is a credit or a debit entry.
      type: string
      enum:
        - Credit
        - Debit
    AEEntryStatusCode:
      description: Status of a transaction entry on the books of the account servicer.
      type: string
      enum:
        - Booked
        - Pending
        - Rejected
    AETransactionMutabilityCode:
      description: Specifies the Mutability of the Transaction record.
      type: string
      enum:
        - Mutable
        - Immutable
    BookingDateTime:
      description: >
        Date and time when a transaction entry is posted to an account on the account servicer's books.

        Usage: Booking date is the expected booking date, unless the status is booked, in which case it is the actual
        booking date.

        All dates in the JSON payloads are represented in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below: 2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    ValueDateTime:
      description: >
        Date and time at which assets become available to the account owner in case of a credit entry, or cease to be
        available to the account owner in case of a debit transaction entry. 

        Usage: If transaction entry status is pending and value date is present, then the value date refers to an
        expected/requested value date. 

        For transaction entries subject to availability/float and for which availability information is provided, the
        value date must not be used. In this case the availability component identifies the number of availability days.

        Availability float refers to the time period between fund deposits and clearing.

        The float is essentially double-counted money: a paid sum which, due to delays in processing, appears
        simultaneously in the accounts of the Debtor and the Creditor.

        All dates in the JSON payloads are represented in ISO 8601 date-time format. All date-time fields in responses
        must include the timezone. An example is below: 2017-04-05T10:43:07+00:00"
      type: string
      format: date-time
    TransactionInformation:
      description: >
        Further details of the transaction. This is the transaction narrative, which is unstructured text.

        REQUIRED from v2.2. Every transaction returned MUST carry a narrative by which the customer can recognise the
        entry.

        Where the LFI holds no stored narrative for a transaction, it MUST derive one from the data it does hold — the
        merchant name, the counterparty, or the transaction type. Whitespace-only values and non-informative
        placeholders such as `N/A`, `-`, or `Unknown` do not satisfy this requirement.
      type: string
      minLength: 1
      maxLength: 500
    AccountId:
      description: >-
        A unique and immutable identifier produced by the LFI to identify the account resource.This identifier has no
        meaning to the account owner (User 1).
      type: string
      minLength: 1
      maxLength: 40
    StatusUpdateDateTime:
      description: >-
        Date and time at which the account resource status was updated. All dates in the JSON payloads are represented
        in ISO 8601 date-time format. 

        All date-time fields in responses must include the timezone. An example is below:

        2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    AEAccountStatusCode:
      description: >
        Specifies the status of account resource in code form.


        * Active: The account exist and is in an active state.


        * Inactive: The account is deemed not active by the LFI. Please refer to the 
          [CBUAE Website](https://rulebook.centralbank.ae/en/rulebook/dormant-accounts-regulation)
          for qualification of Inactive status.

        * Dormant: Please refer to the [CBUAE
        Website](https://rulebook.centralbank.ae/en/rulebook/dormant-accounts-regulation)
          for the definition of Dormant status.

        * Unclaimed: Please refer to the [CBUAE
        Website](https://rulebook.centralbank.ae/en/rulebook/dormant-accounts-regulation)
          for the definition of Unclaimed status.

        * Deceased: The account holder has passed away.


        * Suspended: The account has been temporarily deactivated by the LFI for reasons such as
          suspicious activities or non-compliance with regulations. The account holder might
          be unable to access funds or perform transactions until the bank's requirements 
          are met, and the suspension is lifted. 

        * Closed: The account is closed
      type: string
      enum:
        - Active
        - Inactive
        - Dormant
        - Unclaimed
        - Deceased
        - Suspended
        - Closed
    ActiveOrHistoricCurrencyCode_0:
      description: >-
        Identification of the currency in which the account is held. A code allocated to a currency under an
        international currency 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}$
      example: AED
    ActiveOrHistoricCurrencyCode_1:
      description: >-
        A 3 character alphabetic code allocated to a currency under an international currency 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}$
      example: AED
    Description_0:
      description: Specifies the description of the account sub-type.
      type: string
      minLength: 1
      maxLength: 35
    Nickname:
      description: >-
        The nickname of the account, assigned by User 1 to provide an additional and easier means of identification of
        the account at the LFI.
      type: string
      minLength: 1
      maxLength: 70
    OpeningDate:
      description: >-
        Date on which the account and its related basic services by LFI started to be operational for User 1. All dates
        in the JSON payloads are represented in ISO 8601 date-time format. All date-time fields in responses must
        include the timezone. An example is below: 2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    MaturityDate:
      description: >
        * Fixed Term Savings Account
          MaturityDate is the date on which the savings mature and the balance can be withdrawn by the User without penalty

        * All dates in the JSON payloads are represented in ISO 8601 date-time format. All date-time fields in responses
        must include the timezone. An example is: 2017-04-05T10:43:07+00:00
      type: string
      format: date-time
    AEExternalAccountIdentificationCode:
      description: Name of the identification scheme for the account. Encoded with allowable values published in an external list.
      type: string
      enum:
        - IBAN
        - AccountNumber
        - MaskedPAN
        - MortgageReference
        - FinanceReference
    AEExternalAccountIdentificationCode1:
      description: Name of the identification scheme for the account. Encoded with allowable values published in an external list.
      type: string
      enum:
        - IBAN
        - AccountNumber
        - MaskedPAN
        - MobileNumber
        - UtilityName
        - EWallet
    Identification_0:
      description: >
        Identification for the account assigned by the LFI based on the Account Scheme Name. This identification is
        known by the User 1 account owner. For IBAN, refer to the ISO Standard 13616.
      type: string
      minLength: 1
      maxLength: 400
    Identification_1:
      description: >
        * /accounts resource

        Unique and unambiguous identification of the LFI as the account servicing institution for the Open Banking
        Services. 


        * /beneficiaries resource

        Unique and unambiguous identification of the Creditor Agency as the servicing institution of the Beneficiary.


        * /scheduled-payments resource 

        Unique and unambiguous identification of the LFI as the account servicing institution for the Open Banking
        Services. 


        * /standing-orders resource 

        Unique and unambiguous identification of the LFI as the account servicing institution for the Open Banking
        Services. 


        * /transactions resource 
         Unique and unambiguous identification of the LFI as the account servicing institution for the Open Banking Services. 

        *  Notes:

        Based on the value of the field **SchemeName**, this entry may be :

        * BICFI: The BIC/SWIFT Code        

        * Other: Identifier based on non-SWIFT payment system or local market scheme.
      type: string
      minLength: 1
      maxLength: 35
    AEExternalFinancialInstitutionIdentificationCode:
      description: >
        * /accounts resource 

        The name of the identification scheme for the LFI as the account services provider. Encoded with allowable value
        as published in an external list.


        * /beneficiaries resource 

        Refers to the Financial Institution that manages the account on behalf of the Beneficiary party, managing
        registration, booking of entries on the account, calculating balances on the account and providing information
        about the account. This is the servicing Financial Institution of the Beneficiary account.


        * /scheduled-payments resource 

        Refers to the identification scheme for uniquely identifying the Creditor Agent.


        * /standing-orders resource 

        Refers to the identification scheme for uniquely identifying the Creditor Agent.


        * /transactions resource 

        Refers to the identification scheme for uniquely identifying the Creditor Agent.
      type: string
      enum:
        - BICFI
        - Other
    AccountIdentifiers:
      type: array
      items:
        type: object
        description: Provides the details to identify an account.
        required:
          - SchemeName
          - Identification
        properties:
          SchemeName:
            $ref: '#/components/schemas/AEExternalAccountIdentificationCode'
          Identification:
            $ref: '#/components/schemas/Identification_0'
          Name:
            $ref: '#/components/schemas/Name_0'
        additionalProperties: false
    AEBranchAndFinancialInstitutionIdentification5_0:
      type: object
      required:
        - SchemeName
        - Identification
      description: >-
        Party that manages the account on behalf of the account owner, that is manages the registration and booking of
        entries on the account, calculates balances on the account and provides information about the account.
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalFinancialInstitutionIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_1'
      additionalProperties: false
    AEReadBeneficiary:
      description: List of Beneficiaries for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - Beneficiary
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            Beneficiary:
              type: array
              items:
                $ref: '#/components/schemas/AEBeneficiary'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEBeneficiary:
      description: Beneficiaries for a specific AccountId
      type: object
      required:
        - BeneficiaryId
        - BeneficiaryType
        - AddedViaOF
      properties:
        BeneficiaryId:
          $ref: '#/components/schemas/BeneficiaryId'
        BeneficiaryType:
          $ref: '#/components/schemas/AEBeneficiaryTypeCode'
        AddedViaOF:
          description: Indicates whether the Beneficiary record was created as part of an Open Finance (OF) payment. If 
            false, the Beneficiary was created through an existing LFI channel.
          type: boolean
        AccountHolderName:
          $ref: '#/components/schemas/AccountHolderName'
        AccountHolderShortName:
          $ref: '#/components/schemas/AccountHolderShortName'
        Reference:
          $ref: '#/components/schemas/Reference'
        SupplementaryData:
          $ref: '#/components/schemas/AESupplementaryData'
        CreditorAgent:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification6_0'
        CreditorAccount:
          type: array
          items:
            $ref: '#/components/schemas/AECashAccount5_0'
      additionalProperties: false
    AEReadAccount:
      description: List of Accounts
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - Account
          properties:
            Account:
              type: array
              items:
                $ref: '#/components/schemas/AEAccountArrayId'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEReadAccountId:
      description: Individual Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - Account
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            Account:
              $ref: '#/components/schemas/AEAccountId'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEActiveCurrencyAndAmount_SimpleType:
      description: >-
        A number of monetary units specified in an active currency where the unit of currency is explicit and compliant
        with ISO 4217.
      type: string
      pattern: ^\d{1,13}$|^\d{1,13}\.\d{1,5}$
    AECreditDebitCode_2:
      description: >-
        Indicates whether the balance of the account is a credit or a debit balance. Encoded with allowable values:
        'Credit', 'Debit' Usage: A zero balance is considered to be a credit balance.
      type: string
      enum:
        - Credit
        - Debit
    AEBalanceTypeCode:
      description: >
        The type of balance for the account. 

        Encoded with allowable values of: 

        * 'ClosingAvailable' - end of day balance specifying the amount available to User 1 to withdraw or use. 

        * 'ClosingBooked' - end of day balance including value of payments for cheques or payments which have not been
        cleared yet. 

        * 'ClosingCleared' - end of day balance including value of payments for cheques or payments which have been
        cleared. 

        * 'Expected' - intra day balance including value of payments for cheques or payments which have been cleared. 

        * 'ForwardAvailable' - intraday balance specifying the amount available to User 1 to withdraw or use considering
        forward dated payments or other intraday payments or cheques that will be clearing to the account. 

        * 'Information' - TBC. 

        * 'InterimAvailable' - intraday balance specifying the amount available to User 1 to withdraw or use (most
        probably real-time.'InterimBooked' - intraday balance including value of payments for cheques or payments which
        have not been cleared yet. 

        * 'InterimCleared' - intraday balance including value of payments for cheques or payments which have been
        cleared (probably real-time). 

        * 'OpeningAvailable' - start of day balance specifying the amount available to User 1 to withdraw or use. 

        * 'OpeningBooked' - start of day balance including value of payments for cheques or payments which have not been
        cleared yet. 

        * 'OpeningCleared' - start of day balance including value of payments for cheques or payments which have been
        cleared.

        * 'PreviouslyClosedBooked' -TBC. 


        Note: LFIs support different types for presenting account balance, so this list is used to support different LFI
        systems in UAE.
      type: string
      enum:
        - ClosingAvailable
        - ClosingBooked
        - ClosingCleared
        - Expected
        - ForwardAvailable
        - Information
        - InterimAvailable
        - InterimBooked
        - InterimCleared
        - OpeningAvailable
        - OpeningBooked
        - OpeningCleared
        - PreviouslyClosedBooked
    ProprietaryBankTransactionCodeStructure1:
      type: object
      required:
        - Code
      description: >
        ProprietaryBankTransactionCode is mandatory when the BankTransactionCode (with code specifying the Domain,
        Family and SubFamily as per External Codes ISO20022) is absent.        

        Set of elements to fully identify a proprietary bank transaction code
      properties:
        Code:
          description: Proprietary bank transaction code to identify the underlying transaction.
          type: string
          minLength: 1
          maxLength: 35
        Issuer:
          description: Identification of the issuer of the proprietary bank transaction code.
          type: string
          minLength: 1
          maxLength: 35
      additionalProperties: false
    Name_0:
      description: >-
        The account name is the name or names of the User 1 account owner(s) represented at an account level, as
        displayed by the LFI's online channels. Note: The account name is not the product name or the nickname of the
        account.
      type: string
      minLength: 1
      maxLength: 70
    Name_1:
      description: >
        * Beneficiary

        Name by which an agent is known and which is usually used to identify that agent


        * Creditor agent

        Name by which the Financial institution(FI) which is the creditor is known and which is usually used to identify
        that FI.


        * DebtorAgent

        Name by which an financial institution of the debtor is known and which is usually used to identify that
        financial institution.
      type: string
      minLength: 1
      maxLength: 140
    Name_2:
      description: This is the name of the regulated beneficiary entity that initiates the Direct Debit collection.
      type: string
      minLength: 1
      maxLength: 70
    AEBranchAndFinancialInstitutionIdentification6_1:
      type: object
      description: >
        Financial institution servicing an account for the creditor in case the transaction is a Debit transaction.

        These are optional because there are situations where this cannot be populated for the following Debit
        transactions

        - Cash withdrawals (no creditor account/agent)

        - Cheques and DDs may not have this information at least during the process of clearing and sometimes (e.g. for
        agency banks) may not be reconciled ever

        - Some corner situations with international payments 

        - For card payments (instead merchant information fields should be populated)
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalFinancialInstitutionIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_1'
        Name:
          $ref: '#/components/schemas/Name_1'
        PostalAddress:
          $ref: '#/components/schemas/AEPostalAddress'
      additionalProperties: false
    AEPostalAddress:
      description: Address properties based on ISO 20022 `PostalAddress27` definition
      type: object
      required:
        - AddressLine
        - Country
      properties:
        AddressType:
          description: The type of address. Omitted if type not held.
          type: string
          enum:
            - Billing
            - Business
            - Correspondence
            - DeliveryTo
            - MailTo
            - POBox
            - Postal
            - Permanent
            - Residential
            - Statement
            - Other
        AddressLine:
          description: >-
            Information that locates and identifies a specific address for a transaction entry, that is presented in
            free format text.
          type: array
          minItems: 1
          maxItems: 7
          items:
            type: string
            minLength: 1
            maxLength: 70
        BuildingNumber:
          description: The unit, apartment, or villa number within a building or community
          type: string
          minLength: 1
          maxLength: 16
        BuildingName:
          description: Name of the building or house.
          type: string
          minLength: 1
          maxLength: 140
        Floor:
          description: Floor or storey within a building.
          type: string
          minLength: 1
          maxLength: 70
        StreetName:
          description: The name of the street or road where the property is located.
          type: string
          minLength: 1
          maxLength: 140
        DistrictName:
          description: The district, community, or neighbourhood where the property is located.
          type: string
          minLength: 1
          maxLength: 140
        PostBox:
          description: The P.O. Box number assigned to the recipient for mail delivery.
          type: string
          minLength: 1
          maxLength: 16
        TownName:
          description: Name of a built-up area, such as a town or city.
          type: string
          minLength: 1
          maxLength: 140
        CountrySubDivision:
          description: Country subdivision, such as state or province. This is the Emirate where the address is registered.
          type: string
          enum:
            - AbuDhabi
            - Ajman
            - Dubai
            - Fujairah
            - RasAlKhaimah
            - Sharjah
            - UmmAlQuwain
        Country:
          description: The country associated with the address, represented using the ISO 3166-1 alpha-2 country code.
          type: string
          pattern: ^[A-Z]{2}$
      additionalProperties: false
    AEPartyPostalAddress:
      allOf:
        - $ref: '#/components/schemas/AEPostalAddress'
        - type: object
          required:
            - AddressLine
          properties:
            AddressType:
              type: string
              enum:
                - Residential
    AEMerchantDetails1:
      type: object
      description: >
        Details of the Merchant involved in the transaction.

        Merchant Details are specified only for those merchant categories that are generally expected to originate
        retail financial transactions
      properties:
        MerchantId:
          description: MerchantId
          type: integer
          minLength: 8
          maxLength: 20
        MerchantName:
          description: Name by which the merchant is known.
          type: string
          minLength: 1
          maxLength: 350
        MerchantCategoryCode:
          description: >
            Category code values are used to enable the classification of merchants into specific categories based on
            the type of business, trade or services supplied. 

            Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the
            transaction."
          type: string
          minLength: 3
          maxLength: 4
      additionalProperties: false
    AETransactionCashBalance:
      type: object
      required:
        - CreditDebitIndicator
        - Type
        - Amount
      description: >-
        Set of elements used to define the balance as a numerical representation of the net increases and decreases in
        an account after a transaction entry is applied to the account.
      properties:
        CreditDebitIndicator:
          $ref: '#/components/schemas/AECreditDebitCode_2'
        Type:
          $ref: '#/components/schemas/AEBalanceTypeCode'
        Amount:
          type: object
          required:
            - Amount
            - Currency
          description: Amount of money of the cash balance after a transaction entry is applied to the account..
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
          additionalProperties: false
      additionalProperties: false
    AEBankTransactionCodeStructure:
      type: object
      description: >
        BankTransactionCode is mandatory (with code specifying the Domain, Family and SubFamily as per External Codes
        ISO20022) when the ProprietaryBankTransactionCode is absent.        

        Specifies the domain, the family and the sub-family of the bank transaction code, in a structured and
        hierarchical format.

        Usage: If a specific family or sub-family code cannot be provided, the generic family code defined for the
        domain or the generic sub-family code defined for the family should be provided.

        [https://www.iso20022.org/sites/default/files/2022-05/BTC_Codification_31May2022.xls](https://www.iso20022.org/sites/default/files/2022-05/BTC_Codification_31May2022.xls)
      properties:
        Domain:
          description: Specifies the Domain
          type: string
        DomainCode:
          description: Specifies the Domain Code.
          type: string
        Family:
          description: Specifies the Family
          type: string
        FamilyCode:
          description: Specifies the Family Code
          type: string
        SubFamily:
          description: Specifies the Sub-Family
          type: string
        SubFamilyCode:
          description: Specifies the Sub-family Code
          type: string
      additionalProperties: false
    AECurrencyExchange:
      type: object
      required:
        - SourceCurrency
        - TargetCurrency
        - UnitCurrency
        - ExchangeRate
        - InstructedAmount
      description: Set of elements used to provide details on the currency exchange.
      properties:
        SourceCurrency:
          description: >-
            Currency from which an amount is to be converted in a currency conversion. 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}$
        TargetCurrency:
          description: >-
            Currency into which an amount is to be converted in a currency conversion.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}$
        UnitCurrency:
          description: >-
            Currency in which the rate of exchange is expressed in a currency exchange. In the example 1AED = xxxCUR,
            the unit currency is AED.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}$
        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.

            Usage: ExchangeRate expresses the ratio between UnitCurrency and QuotedCurrency (ExchangeRate =
            UnitCurrency/QuotedCurrency).
          type: number
        ContractIdentification:
          description: Unique identification to unambiguously identify the foreign exchange contract.
          type: string
          minLength: 1
          maxLength: 35
        QuotationDate:
          description: >-
            Date and time at which an exchange rate is quoted.All dates in the JSON payloads are represented in ISO 8601
            date-time format. 

            All date-time fields in responses must include the timezone. An example is below:

            2017-04-05T10:43:07+00:00
          type: string
          format: date-time
        InstructedAmount:
          type: object
          required:
            - Amount
            - Currency
          description: >-
            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.
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
          additionalProperties: false
      additionalProperties: false
    AEReadProduct1:
      description: Product detail for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - Product
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            Product:
              type: array
              items:
                $ref: '#/components/schemas/AEProduct'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false

    AEProductFinancialCalculationMeasure:
      type: object
      properties:
        Amount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
        Rate:
          description: Specifies the percentage rate applied when the charge is calculated as a percentage rather than 
            as a fixed monetary amount.
          type: number
          minimum: 0
          maximum: 100
        ApplicationFrequency:
          description: >- 
            Frequency at which reward, interest, or profit is applied, such as monthly or quarterly, 
            including Islamic profit distribution
          type: string
          enum:
            - Monthly
            - Daily
        InterestCalculationMethod:
          description: >-
            Method used to calculate interest such as based on principal or drawdown.
          type: string
          enum:
            - PrincipalBalance
            - OutstandingBalance
            - InitialDrawdownAmount
        ProfitCalculationMethod:
          description: >-
            Method used to calculate profit, such as based on principal or drawdown, for Islamic calculation
            methods.
          type: string
          enum:
            - PrincipalBalance
            - OutstandingBalance
            - InitialDrawdownAmount
        MaximumChargeAmount:
          description: Defines the maximum monetary amount that can be applied when a percentage-based charge 
            calculation would otherwise exceed this limit.
          type: object
          required:
            - Amount
            - Currency
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
          additionalProperties: false
        Basis:
          description: Confirmation of what the charge is based on and calculated against.
          type: string
      additionalProperties: false

    AEProductConditions:
      type: object
      required:
        - Description
      properties:
        Field:
          description: Field in the product spec that the condition applies to
          type: string 
        Operator:
          description: Logical operator used in the condition (e.g., ==, >, <=, !=)
          type: string           
        Value:
          description: Value used in the condition
          type: string
        Description:
          description: Description of the fee, including purpose and applicability
          type: string

    AEJwe:
      title: Encrypted Data
      description: >-
        Encrypted bank data, provided as a JWE by the LFI. Please refer to the business rules for a description of the 
        approach to decrypting this data.
      type: string
      example: eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ....

    AEProduct:
      type: object
      description: Set of elements used to define the product details.
      properties:
        ShariaStructure:
          description: Provides the Islamic finance contract or structure type applied to a product when it has been 
            confirmed as Sharia-compliant.
          type: string
          enum:
          - Ijara
          - ServiceIjara
          - Murabaha
          - Musharaka
          - Tawarruq
        Charges:
          $ref: '#/components/schemas/AEProductCharges'
        FinanceRates:
          anyOf:
            - $ref: '#/components/schemas/AEProductFinanceRates'
            - $ref: '#/components/schemas/AEJwe'
        ShariaFinanceRates:
          description: Finance rates for Sharia-compliant products. Can be provide in cleartext or as a JWE based on
            preference of LFI for sharing this information.
          anyOf:
            - description: List of one-or-more finance rates for Sharia-compliant products
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/AEProductShariaFinanceRate1Types'
            - $ref: '#/components/schemas/AEJwe'
        DepositRates:
          $ref: '#/components/schemas/AEProductDepositRates'
        ExpectedProfitRates:
          description: List of one-or-more deposit rates for Sharia-compliant products
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AEProductExpectedProfitRate1Properties'
        IsSecured:
          type: boolean
          description: Indicates if the product is secured by collateral.

        # Extended Product Data Enhancement

        IsSalaryTransferRequired:
          description: >- 
            Indicates whether salary transfer is required as part of the product eligibility or approval conditions.
            Common for salary-assigned lending products.
          type: boolean
        Tenor:
          description: Product tenor
          type: object
          minProperties: 1
          properties:
            OriginalTenor:
              description: Original product tenor
              allOf:
                - $ref: '#/components/schemas/AEDuration'
            RemainingTenor:
              description: Original product tenor
              allOf:
                - $ref: '#/components/schemas/AEDuration'
        AssetBacked:
          $ref: '#/components/schemas/AEProductAssetBackedProducts'
        RewardsBenefits:
          $ref: '#/components/schemas/AEProductRewardsBenefitsProperties'
        TakafulRequired:
          description: Indicates whether Takaful coverage is required for the product.
          type: boolean
        TakafulDescription:
          description: Provides information on the type and purpose of the required Takaful coverage. 
          type: string
          minLength: 1
          maxLength: 500
      additionalProperties: false
    AEReadTransaction:
      description: List of Transactions for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - Transaction
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            Transaction:
              type: array
              items:
                $ref: '#/components/schemas/AETransaction'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTransactionsStatements'
      additionalProperties: false
    AETransactionCardInstrument:
      type: object
      required:
        - CardSchemeName
        - InstrumentType
      description: Set of elements to describe the card instrument used in the transaction.
      properties:
        CardSchemeName:
          description: Name of the card scheme.
          type: string
          enum:
            - AmericanExpress
            - Diners
            - Discover
            - GCC
            - MasterCard
            - UPI
            - VISA
        InstrumentType:
          description: The card instrument type.
          type: string
          enum:
            - ApplePay
            - Contactless
            - MagStripe
            - Chip
            - Other
        Name:
          description: Name of the cardholder using the card instrument.
          type: string
          minLength: 1
          maxLength: 70
        Identification:
          description: >-
            Identification assigned by an institution to identify the card instrument used in the transaction. This
            identification is known by the account owner, and MUST be masked.
          type: string
          minLength: 1
          maxLength: 16
          example: 1234********4321
      additionalProperties: false
    AESupplementaryData:
      type: object
      description: Additional information that can not be captured in the structured fields and/or any other specific block.
    AEBranchAndFinancialInstitutionIdentification6_2:
      type: object
      description: >
        Financial institution servicing an account for the Debtor in case the transaction is a Credit transaction.

        These are optional because there are situations where this cannot be populated for the following Credit
        transactions

        - cash deposits (no creditor account/agent)

        - cheques and DDs may not have this information at least during the process of clearing and sometimes (e.g. for
        agency banks) may not be reconciled ever

        - some corner situations with international payments 

        - for refunds with card payments  (instead merchant information fields should be populated)
      properties:
        SchemeName:
          $ref: '#/components/schemas/AEExternalFinancialInstitutionIdentificationCode'
        Identification:
          $ref: '#/components/schemas/Identification_1'
        Name:
          $ref: '#/components/schemas/Name_1'
        PostalAddress:
          $ref: '#/components/schemas/AEPostalAddress'
      additionalProperties: false
    AETransaction:
      type: object
      description: Provides further details on an entry in the report.
      required:
        - TransactionId
        - CreditDebitIndicator
        - Status
        - BookingDateTime
        - Amount
        - TransactionDateTime
        - TransactionType
        - SubTransactionType
        - TransactionInformation
      properties:
        TransactionId:
          $ref: '#/components/schemas/TransactionId'
        TransactionDateTime:
          $ref: '#/components/schemas/TransactionDateTime'
        LocalTimeZone:
          $ref: '#/components/schemas/LocalTimeZone'
        StatementReference:
          $ref: '#/components/schemas/StatementReference'
        TransactionReference:
          $ref: '#/components/schemas/TransactionReference'
        TransactionType:
          $ref: '#/components/schemas/TransactionType'
        SubTransactionType:
          $ref: '#/components/schemas/SubTransactionType'
        TerminalId:
          $ref: '#/components/schemas/TerminalId'
        Flags:
          type: array
          items:
            $ref: '#/components/schemas/Flags'
        PaymentModes:
          $ref: '#/components/schemas/PaymentMode'
        CreditDebitIndicator:
          $ref: '#/components/schemas/AECreditDebitCode_1'
        Status:
          $ref: '#/components/schemas/AEEntryStatusCode'
        TransactionMutability:
          $ref: '#/components/schemas/AETransactionMutabilityCode'
        BookingDateTime:
          $ref: '#/components/schemas/BookingDateTime'
        ValueDateTime:
          $ref: '#/components/schemas/ValueDateTime'
        TransactionInformation:
          $ref: '#/components/schemas/TransactionInformation'
        Amount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_5'
        ChargeAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_6'
        ChargeAmountVat:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_8'
        CurrencyExchange:
          $ref: '#/components/schemas/AECurrencyExchange'
        BankTransactionCode:
          $ref: '#/components/schemas/AEBankTransactionCodeStructure'
        ProprietaryBankTransactionCode:
          $ref: '#/components/schemas/ProprietaryBankTransactionCodeStructure1'
        Balance:
          $ref: '#/components/schemas/AETransactionCashBalance'
        MerchantDetails:
          $ref: '#/components/schemas/AEMerchantDetails1'
        CreditorAgent:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification6_1'
        CreditorAccount:
          type: array
          items:
            $ref: '#/components/schemas/AECashAccount6_0'
        DebtorAgent:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification6_2'
        DebtorAccount:
          $ref: '#/components/schemas/AECashAccount6_1'
        CardInstrument:
          $ref: '#/components/schemas/AETransactionCardInstrument'
        SupplementaryData:
          $ref: '#/components/schemas/AESupplementaryData'
        BillDetails:
          $ref: '#/components/schemas/BillDetails'
        GeoLocation:
          $ref: '#/components/schemas/AEGeoLocation'
        PaymentPurposeCode:
          $ref: '#/components/schemas/AEPaymentPurposeCode'
        IsPrimaryInstrument:
          type: boolean
          description: Indicates if the transaction is made with primary instrument.

        # Extended Product Enhancement

        Allocations:
          $ref: '#/components/schemas/AEAmountWithCategorization'

      additionalProperties: false
    AEAccountId:
      type: object
      description: >-
        Unambiguous identification of the account to which credit and debit entries are made. The following fields are
        optional only for accounts that are switched:

          * Data.Currency  
          * Data.AccountType  
          * Data.AccountSubType

        For all other accounts, the fields must be populated by the LFI.
      properties:
        AccountHolderName:
          $ref: '#/components/schemas/AccountHolderName'
        AccountHolderShortName:
          $ref: '#/components/schemas/AccountHolderShortName'
        Status:
          $ref: '#/components/schemas/AEAccountStatusCode'
        StatusUpdateDateTime:
          $ref: '#/components/schemas/StatusUpdateDateTime'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_0'
        AccountType:
          $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountTypeCode'
        AccountSubType:
          $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountSubTypeCode'
        Description:
          $ref: '#/components/schemas/Description_0'
        Nickname:
          $ref: '#/components/schemas/Nickname'
        OpeningDate:
          $ref: '#/components/schemas/OpeningDate'
        MaturityDate:
          $ref: '#/components/schemas/MaturityDate'
        AccountIdentifiers:
          $ref: '#/components/schemas/AccountIdentifiers'
        Servicer:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification5_0'

        # Extended Product Enhancement

        IsShariaCompliant:
          $ref: '#/components/schemas/AEShariaFlag'

      additionalProperties: false
    AEAccountArrayId:
      type: object
      description: >-
        Unambiguous identification of the account to which credit and debit entries are made. The following fields are
        optional only for accounts that are switched:

          * Data.Currency  
          * Data.AccountType  
          * Data.AccountSubType

        For all other accounts, the fields must be populated by the LFI.
      required:
        - AccountId
      properties:
        AccountId:
          $ref: '#/components/schemas/AccountId'
        AccountHolderName:
          $ref: '#/components/schemas/AccountHolderName'
        AccountHolderShortName:
          $ref: '#/components/schemas/AccountHolderShortName'
        Status:
          $ref: '#/components/schemas/AEAccountStatusCode'
        StatusUpdateDateTime:
          $ref: '#/components/schemas/StatusUpdateDateTime'
        Currency:
          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_0'
        AccountType:
          $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountTypeCode'
        AccountSubType:
          $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountSubTypeCode'
        Description:
          $ref: '#/components/schemas/Description_0'
        Nickname:
          $ref: '#/components/schemas/Nickname'
        OpeningDate:
          $ref: '#/components/schemas/OpeningDate'
        MaturityDate:
          $ref: '#/components/schemas/MaturityDate'
        AccountIdentifiers:
          $ref: '#/components/schemas/AccountIdentifiers'
        Servicer:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification5_0'
        
        # Extended Product Enhancement

        IsShariaCompliant:
          $ref: '#/components/schemas/AEShariaFlag'

      additionalProperties: false
    AEPatchConsentSigned:
      allOf:
        - $ref: '#/components/schemas/Jwt'
        - type: object
          properties:
            message:
              $ref: '#/components/schemas/AEPatchConsent'
          required:
            - message
          additionalProperties: false
    AEPatchConsent:
      description: Patch Bank Data Sharing Consent
      type: object
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - Status
          properties:
            Status:
              $ref: '#/components/schemas/PatchConsentStatus'
            RevokedBy:
              $ref: '#/components/schemas/AERevokedBy'
          additionalProperties: false
        Subscription:
          $ref: '#/components/schemas/EventNotification'
      additionalProperties: false
    AEConsentsByBaseConsentIdResponse:
      type: array
      items:
        $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingConsentPropertiesV21'
    AEReadBalance:
      description: List of Balances for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - Balance
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            Balance:
              type: array
              items:
                $ref: '#/components/schemas/AEBalance'
              minItems: 1
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEBalance:
      type: object
      description: Set of elements used to define the balance details.
      required:
        - CreditDebitIndicator
        - Type
        - DateTime
        - Amount
      properties:
        CreditDebitIndicator:
          $ref: '#/components/schemas/AECreditDebitCode_2'
        Type:
          $ref: '#/components/schemas/AEBalanceTypeCode'
        DateTime:
          description: >-
            Indicates the date (and time) that the account balance was checked.All dates in the JSON payloads are
            represented in ISO 8601 date-time format. All date-time fields in responses must include the timezone. An
            example is below: 2017-04-05T10:43:07+00:00
          type: string
          format: date-time
        Amount:
          type: object
          required:
            - Amount
            - Currency
          description: Amount of money of the cash balance.
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
          additionalProperties: false
        CreditLine:
          type: array
          items:
            type: object
            description: Set of elements used to provide details on the credit line.
            required:
              - Included
              - Type
              - Amount
            properties:
              Included:
                description: >-
                  Boolean flag to Indicate whether or not a credit line is included in the balance of the account.
                  Usage: If not present, credit line is not included in the balance amount of the account.
                type: boolean
              Type:
                description: >-
                  Type of credit line provided to the account. Encoded with allowable values of: Available, Credit,
                  Emergency, Pre-Agreed, Temporary. Note: LFIs support different types of credit lines on accounts, so
                  this list is used to support different LFI systmes in UAE.
                type: string
                enum:
                  - Available
                  - Credit
                  - Emergency
                  - Pre-Agreed
                  - Temporary
              Amount:
                type: object
                required:
                  - Amount
                  - Currency
                description: Amount of money of the credit line.
                properties:
                  Amount:
                    $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
                  Currency:
                    $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
                additionalProperties: false
            additionalProperties: false

        # Extended Product Enhancement

        Components:
          type: array
          items:
            $ref: '#/components/schemas/AEAmountWithCategorization'

      additionalProperties: false
    AEReadScheduledPayment:
      description: List of Scheduled Payments for an Account
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: object
          description: Primary data for the resource
          required:
            - AccountId
            - ScheduledPayment
          properties:
            AccountId:
              $ref: '#/components/schemas/AccountId'
            ScheduledPayment:
              type: array
              items:
                $ref: '#/components/schemas/AEScheduledPayment'
          additionalProperties: false
        Links:
          $ref: '#/components/schemas/Links'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AEScheduledPayment:
      description: Scheduled Payments for a specific AccountId
      type: object
      required:
        - ScheduledPaymentId
        - ScheduledPaymentDateTime
        - ScheduledType
        - InstructedAmount
      properties:
        ScheduledPaymentId:
          $ref: '#/components/schemas/ScheduledPaymentId'
        AccountHolderName:
          $ref: '#/components/schemas/AccountHolderName'
        AccountHolderShortName:
          $ref: '#/components/schemas/AccountHolderShortName'
        ScheduledType:
          $ref: '#/components/schemas/AEExternalScheduleTypeCode'
        ScheduledPaymentDateTime:
          $ref: '#/components/schemas/ScheduledPaymentDateTime'
        CreditorReference:
          $ref: '#/components/schemas/Reference'
        DebtorReference:
          $ref: '#/components/schemas/DebtorReference'
        InstructedAmount:
          $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_1'
        CreditorAgent:
          $ref: '#/components/schemas/AEBranchAndFinancialInstitutionIdentification5_1'
        CreditorAccount:
          type: array
          items:
            $ref: '#/components/schemas/AECashAccount5_0'
      additionalProperties: false
    TerminalId:
      description: ID of the Terminal if the transaction was initiated from a retail POS
      type: integer
      minLength: 8
      maxLength: 20
    BillDetails:
      description: Bill Details
      type: object
      properties:
        BillerId:
          description: >-
            This should be 'BillerCode' as per SP-SADAD specifications. It is a unique biller identifier within SADAD
            that could be used by the end-user to refer to a specific SADAD biller (e.g. STC biller code is 001, water
            services biller code is 015, etc.)
          type: number
        BillNumber:
          description: Unique bill identifier within the account.
          type: string
        BillPaymentType:
          description: >
            Indicates whether the bill could be a One-off payment, Recurring payment, Postpaid, Pre-paid, etc. Example
            values:

            - "Post-Paid"

            - "AdvancePaymentForRoaming"

            - "Recharge"

            - "Renewal"

            - "RoamingDeposit"

            - "One-Off"

            - "RecurringPayment"
          type: string
          enum:
            - Post-Paid
            - AdvancePaymentForRoaming
            - Recharge
            - Renewal
            - RoamingDeposit
            - One-Off
            - RecurringPayment
      additionalProperties: false
    PatchConsentStatus:
      description: >-
        The Revoked status must only be set if the current Consent Status is set to either Authorized or
        AwaitingAuthorization
      type: string
      enum:
        - Revoked
    AERevokedBy:
      description: |
        Denotes the Identifier of the revocation.

        | Identifier| Description|
        |-----------|------------|
        | LFI | Revoked by LFI without User initiation|
        | TPP | Revoked by TPP without User initiation|
        | LFI.InitiatedByUser | Initiated by User via the LFI|
        | TPP.InitiatedByUser | Initiated by User via the TPP|
      type: string
      enum:
        - LFI
        - TPP
        - LFI.InitiatedByUser
        - TPP.InitiatedByUser
    AEGeoLocation:
      description: Estimated latitude and longitude coordinates, in degrees. Contains one latitude and one longitude subfield.
      type: object
      required:
        - Latitude
        - Longitude
      properties:
        Latitude:
          description: Latitude in degrees
          type: string
        Longitude:
          description: Longitude in degrees
          type: string
      additionalProperties: false
    AEPaymentPurposeCode:
      description: Aani purpose code that relates to the type of services or goods that corresponds to the underlying 
        purpose of the payment. The code must conform to the published Aani payment purpose code list
      type: string
      minLength: 1
      maxLength: 3
      pattern: ^[A-Z]{3}$

    AEProductCharges:
      description: Fees and charges applicable to the account or product
      type: array
      minItems: 1
      items:
        description: Properties of the charges applied
        type: object
        required:
          - Name
          - Description
          - Charge
        properties:
          Type:
            description: Type of charge.
            type: string
            enum:
            - MonthlyFees
            - AnnualFees
            - BalanceFallBelow
            - Overdraft
            - DomesticTransaction
            - ForeignTransaction
            - ATMWithdrawal
            - ChequeBook
            - ReplacementChequeBook
            - ReturnCheque
            - CardReplacement
            - AccountStatement
            - LetterIssued
            - AccountClosure
            - CashAdvance
            - LatePayment
            - BalanceTransfer
            - OverLimit
            - SalesVoucherCopy
            - Processing
            - FinanceCancellation
            - PartialPayment
            - EarlySettlement
            - FinalSettlement
            - Other
          Name:
            type: string
            description: Name of the charge
            minLength: 1
            maxLength: 40
          Description:
            description: Description of the fee, including purpose and applicability
            type: string
          Charge:
            description: Array of charge components including amount, currency, and applicable rate
            type: array
            items:
              $ref: '#/components/schemas/AEProductFinancialCalculationMeasure'
          Conditions:
            description: Array of conditions that trigger the fee
            type: array
            items:
              $ref: '#/components/schemas/AEProductConditions'
          Justification:
            description: Reasoning or business logic behind the imposition of the fee
            type: string
          Frequency:
            description: >-
              Frequency or trigger logic for the reward or fee, such as monthly if balance < 1000, or periodic 
              Hibah distribution
            type: string
          DonatedToCharity:
            description: Confirmation if the charge will be donated to charity when the product is Sharia compliant
            type: boolean
          Notes:
            type: string
            description: Additional notes or clarifications about the rate structure
            minLength: 1
            maxLength: 500
          SupplementaryInformation:
            description: >-
              Optional object for supplementary metadata, such as Sharia compliance notes or reward history
            type: object
        additionalProperties: false

    AEExternalAccountRoleCode:
      description: |
        Specifies the Party's role with respect to the related account. Allowed values 
        are defined based on ISO 20022 definitions as follows:

          - Administrator: The party that administers the account and is not the 
            account owner.
          - Beneficiary: Ultimate party that is entitled to either receive the benefits 
            of the ownership of the account.
          - CustodianForMinor: Entity that holds the account on behalf of a legal 
            minor. Although the account is registered under the name of the minor, 
            the custodian retains control of the account.
          - Granter: Granter role in the hedge funds industry.
          - LegalGuardian: Party that has been appointed by a legal authority to act on 
            behalf of a person judged to be incapacitated.
          - OtherParty: An other type of party. Used when a given account role cannot 
            be mapped to the role defined at the LFI.
          - PowerOfAttorney: Power of attorney which is held by the party.
          - Principal: Party acts as principal for the account for trading purposes.
          - Protector: Person appointed under a trust instrument to direct or 
            restrain the trustees in relation to their administration of an account 
            held in trust. 
          - RegisteredShareholderName: Party for which shares are to be registered,
            for share holding accounts only.
          - SecondaryOwner: Entity that is not the primary owner when the ownership of 
            an investment account is split among several owners.
          - SeniorManagingOfficial: Party that makes, or participates in the making of, 
            decisions that affect the whole, or a substantial part, of the business of 
            a customer of a reporting entity or that has the capacity to affect 
            significantly the financial standing of a customer of a reporting entity.
          - Settlor: Entity that creates a trust or contributes assets to the trust.
          - SuccessorOnDeath: Deceased's estate, or successor, to whom account 
            ownership will be transferred upon the death of one of the 
            owners.
      type: string
      enum:
        - Administrator
        - Beneficiary
        - CustodianForMinor
        - Granter
        - LegalGuardian
        - OtherParty
        - PowerOfAttorney
        - Principal
        - Protector
        - RegisteredShareholderName
        - SecondaryOwner
        - SeniorManagingOfficial
        - Settlor
        - SuccessorOnDeath
    AEExternalPartyTypeCode:
      type: string
      enum:
        - Delegate
        - Joint
        - Sole
      description: |
        Specifies the party type.
        Encoded with allowable values: 
        "Delegate" - Used for business accounts when user has delegated authority to access the account , 
        "Joint" - Party is a joint owner of the account 
        "Sole" - Party is the sole owner of the account
    AEPartyCalendarType:
      type: string
      enum:
        - IslamicCalendar
        - GregorianCalendar
      description: |
        The type of calendar used for the date of issuance and date of expiry in the document evidence
        Allowable values:
        "Islamic Calendar"
        "Gregorian Calendar"
        Both calendars must follow YYYY-MM-DD
    AEPartyIdentityAssurance2:
      type: object
      required:
        - PartyId
        - PartyType
        - PartyCategory
        - AccountRole
        - VerifiedClaims
      properties:
        PartyId:
          type: string
          minLength: 1
          maxLength: 40
          description: >-
            A unique and immutable identifier used to identify the customer resource. This identifier has no meaning to
            the account owner.
        PartyNumber:
          type: string
          minLength: 1
          maxLength: 35
          description: Number assigned by an agent to identify its customer.
        PartyType:
          $ref: '#/components/schemas/AEExternalPartyTypeCode'
        PartyCategory:
          description: Category of Party
          type: string
          enum:
            - Retail
            - SME
            - Corporate
        AccountRole:
          $ref: '#/components/schemas/AEExternalAccountRoleCode'
        VerifiedClaims:
          type: array
          items:
            $ref: '#/components/schemas/VerifiedClaim'
          description: Container object containing entries for the trust framework and the evidence used to verify the claims
      description: >
        Party Identity Assurance (Response) Schema 

        Based on the [OpenID Connect for Identity Assurance 1.0
        Specification](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html)
      additionalProperties: false
    AEPartyIdentityAssurance4:
      type: object
      required:
        - PartyId
        - PartyCategory
        - VerifiedClaims
      properties:
        PartyId:
          type: string
          minLength: 1
          maxLength: 40
          description: >-
            A unique and immutable identifier used to identify the customer resource. This identifier has no meaning to
            the account owner.
        PartyNumber:
          type: string
          minLength: 1
          maxLength: 35
          description: Number assigned by an agent to identify its customer.
        PartyCategory:
          description: Category of Party
          type: string
          enum:
            - Retail
            - SME
            - Corporate
        VerifiedClaims:
          type: array
          items:
            $ref: '#/components/schemas/VerifiedClaim'
          description: Container object containing entries for the trust framework and the evidence used to verify the claims
      description: >
        Party Identity Assurance (Response) Schema 

        Based on the [OpenID Connect for Identity Assurance 1.0
        Specification](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html)
      additionalProperties: false
    AEPartyIdentityCheckDetail:
      type: object
      properties:
        CheckMethod:
          type: string
          description: >
            Identifes the method used by PASP for checking the evidence for verification

            String representing the check done, this includes processes such as checking the authenticity of the
            document, or verifying the user's biometric against an identity document.
        Organization:
          type: string
          description: >
            String denoting the legal entity that performed the check. This SHOULD be included if the OP did not perform
            the check itself
        Txn:
          type: string
          description: >
            Identifier referring to the identity verification transaction. The OP MUST ensure that this is present when
            EvidenceRef element is used. The OP MUST ensure that the transaction identifier can be resolved into
            transaction details during an audit
        Time:
          $ref: '#/components/schemas/ISODateTime'
      description: >
        Identifes the method used by PASP for checking the evidence for verification.

        Representing the checks done in relation to the evidence

        OpenID Connect for Identity Assurance 1.0:
        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-element](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-element)
      additionalProperties: false
    AEPartyIdentityEvidenceAttachment:
      type: object
      required:
        - Desc
        - ContentType
        - Content
        - Txn
      properties:
        Desc:
          type: string
          description: |
            Description of the document. This can be the filename or just an explanation of the content.
        ContentType:
          type: string
          description: |
            Content (MIME) type of the document            
        Content:
          type: string
          description: |
            Base64 encoded representation of the document content
        Txn:
          type: string
          description: |
            Identifier referring to the transaction
      additionalProperties: false
    AEPartyIdentityEvidenceAttachments:
      type: object
      required:
        - AEPartyIdentityEvidenceAttachments
      properties:
        AEPartyIdentityEvidenceAttachments:
          type: array
          items:
            $ref: '#/components/schemas/AEPartyIdentityEvidenceAttachment'
          description: >
            Attachments

            [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-attachments](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-attachments)
      additionalProperties: false
    AEPartyIdentityEvidenceTypeDocument:
      type: object
      properties:
        Type:
          anyOf:
            - $ref: '#/components/schemas/DocumentEvidenceType'
          description: The type of evidence allowed for providing verification.
        CheckDetails:
          type: array
          items:
            $ref: '#/components/schemas/AEPartyIdentityCheckDetail'
        Verifier:
          $ref: '#/components/schemas/DocumentEvidenceVerifier'
        Time:
          $ref: '#/components/schemas/ISODateTime'
        DocumentDetails:
          $ref: '#/components/schemas/DocumentEvidenceDetails'
        Attachments:
          $ref: '#/components/schemas/AEPartyIdentityEvidenceAttachments'
      description: >
        Document Evidence

        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-type-document](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-type-document)
      additionalProperties: false
    AEPartyIdentityEvidenceTypeElectronicRecord:
      type: object
      properties:
        Type:
          anyOf:
            - $ref: '#/components/schemas/ElectronicRecordEvidenceType'
          description: The type of evidence allowed for providing verification.
        CheckDetails:
          type: array
          items:
            $ref: '#/components/schemas/AEPartyIdentityCheckDetail'
        Time:
          $ref: '#/components/schemas/ISODateTime'
        Record:
          $ref: '#/components/schemas/ElectronicRecordProperties'
        Attachments:
          $ref: '#/components/schemas/AEPartyIdentityEvidenceAttachments'
      description: >
        Electronic Record Evidence

        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-type-electronic_re](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-type-electronic_re)
      additionalProperties: false
    AEReadParty2:
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          $ref: '#/components/schemas/AEReadParty2Data'
        Links:
          $ref: '#/components/schemas/LinksResource'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      description: List of Parties for an Account
      additionalProperties: false
    AEReadParty2Data:
      type: object
      required:
        - AccountId
        - Party
      properties:
        AccountId:
          $ref: '#/components/schemas/AccountId'
        Party:
          type: array
          items:
            $ref: '#/components/schemas/AEPartyIdentityAssurance2'
      description: Primary data for the resource
      additionalProperties: false
    AEReadParty2Signed:
      type: object
      required:
        - iss
        - exp
        - nbf
        - message
      properties:
        iss:
          type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)'
        exp:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)'
        nbf:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)'
        aud:
          type: array
          items:
            type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)'
        iat:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)'
        message:
          $ref: '#/components/schemas/AEReadParty2'
      additionalProperties: false
    AEReadParty4:
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          $ref: '#/components/schemas/AEReadParty4Data'
        Links:
          $ref: '#/components/schemas/LinksResource'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      description: Current User Information
      additionalProperties: false
    AEReadParty4Data:
      type: object
      required:
        - Party
      properties:
        Party:
          $ref: '#/components/schemas/AEPartyIdentityAssurance4'
      additionalProperties: false
    AEReadParty4Signed:
      type: object
      required:
        - iss
        - exp
        - nbf
        - message
      properties:
        iss:
          type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)'
        exp:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)'
        nbf:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)'
        aud:
          type: array
          items:
            type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)'
        iat:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)'
        message:
          $ref: '#/components/schemas/AEReadParty4'
      additionalProperties: false
    AssuranceDetails:
      type: object
      required:
        - AssuranceType
        - AssuranceClassification
        - EvidenceRef
      properties:
        AssuranceType:
          type: string
          description: String denoting which part of the assurance_process the evidence fulfils
        AssuranceClassification:
          type: string
          description: String reflecting how the evidence has been classified or measured as required by the TrustFramework
        EvidenceRef:
          type: array
          items:
            $ref: '#/components/schemas/EvidenceRef'
      description: Denoting the details about how the evidence complies with the policy
      additionalProperties: false
    AssuranceProcess:
      type: object
      required:
        - Policy
        - Procedure
        - AssuranceDetails
      properties:
        Policy:
          type: string
          description: Representing the standard or policy that was followed.
        Procedure:
          type: string
          description: Representing a specific procedure from the policy that was followed.
        AssuranceDetails:
          type: array
          items:
            $ref: '#/components/schemas/AssuranceDetails'
      description: >
        Determines the assurance process that was followed. This reflects how the evidence meets the requirements of the
        TrustFramework and AssuranceLevel. The factual record of the evidence and the procedures followed are recorded
        in the evidence element, this element is used to cross reference the evidence to the AssuranceLevel followed

        OpenID Connect for Identity Assurance 1.0:
        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-verification-element](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-verification-element)
      additionalProperties: false
    Claims:
      type: object
      required:
        - IdentityType
        - FullName
        - GivenName
        - Surname
        - EmiratesId
        - EmiratesIdExpiryDate
        - ResidentialAddress
      properties:
        IdentityType:
          type: string
          enum:
            - Person
        FullName:
          description: >-
            The full name of the account holder, as it appears on the account, as a single string. Used where LFIs hold
            the account name as a single value.
          type: string
        GivenName:
          type: string
          description: >-
            Given name of the Party. Given name (also called forename) is used to differentiate from the surname or
            family name.
        Surname:
          type: string
          description: Surname of the Party
        MiddleName:
          type: string
          description: Middle name of the Party
        Nickname:
          type: string
          description: Nickname of the Party
        EmiratesId:
          type: string
          description: Emirates ID number of the Party
        EmiratesIdExpiryDate:
          type: string
          format: date
          description: Emirates ID card expiry date
        DateOfBirth:
          type: string
          format: date
          description: Date of birth of the Party
        SourceOfIncome:
          type: string
        Salary:
          type: number
        Nationality:
          type: string
        ResidentialAddress:
          $ref: '#/components/schemas/AEPartyPostalAddress'
        MobileNumber:
          type: string
        Email:
          type: string
        MaritalStatus:
          type: string
        Salutation:
          type: string
        Language:
          type: string
        EmployerName:
          type: string
        EmploymentSinceDate:
          type: string
          format: date
        PowerofAttorney:
          type: boolean
        SalaryTransfer:
          type: boolean
        Profession:
          type: string
        UpdatedAt:
          description: The date and time at which the claims were last updated, in ISO 8601 format
          type: string
          format: date-time
      description: >
        Standard Claims: 

        [https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims)

        IdentityAssurance Claims:

        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-claims](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-claims)

        An LFI MUST provide both GivenName and Surname for a Retail customer
      additionalProperties: false
    CorporateClaims:
      type: object
      description: Standard claims for corporate or SME entities.
      properties:
        IdentityType:
          type: string
          enum:
            - Business
        BusinessName:
          type: string
          minLength: 1
          maxLength: 140
          description: The name of the business
        TradeLicenceNumber:
          type: string
          description: Trade License Number of the business.
        TaxIdentificationNumber:
          type: string
          description: The tax identification number or VAT number for the company.
        DateOfIncorporation:
          type: string
          format: date
          description: The date the company was legally incorporated.
        CountryOfIncorporation:
          type: string
          description: The country where the company is incorporated.
        CorporateAddress:
          $ref: '#/components/schemas/AEPostalAddress'
        CorporateContactEmail:
          type: string
          format: email
          description: The primary email address for corporate communications.
        CorporateContactPhoneNumber:
          type: string
          description: The primary phone number for corporate communications.
        Industry:
          type: string
          description: The industry or sector in which the company operates.
        CompanyWebsite:
          type: string
          format: uri
          description: The official website of the company.
    CountryCode:
      type: object
      required:
        - CountryCode
      properties:
        CountryCode:
          type: string
          pattern: ^[A-Z]{2,2}$
          description: String denoting the country or supranational organization that issued the document as ISO 3166
      additionalProperties: false
    DocumentEvidenceDetails:
      type: object
      properties:
        Type:
          $ref: '#/components/schemas/DocumentEvidenceDetailsType'
        DocumentNumber:
          type: string
          description: The unique id number in the evidence used for verification checking
        PersonalNumber:
          type: string
          description: >
            An identifier that is assigned to the End-User and is not limited to being used in one document, for example
            a national identification number, personal identity number, citizen number, social security number, driver
            number, account number, customer number, licensee number, etc
        SerialNumber:
          type: string
          description: >
            An identifier/number that identifies the document irrespective of any personalization information (this
            usually only applies to physical artifacts and is present before personalization).
        CalendarType:
          $ref: '#/components/schemas/AEPartyCalendarType'
        DateOfIssuance:
          $ref: '#/components/schemas/ISODateTime'
        DateOfExpiry:
          $ref: '#/components/schemas/ISODateTime'
        Issuer:
          $ref: '#/components/schemas/DocumentEvidenceDetailsIssuer'
      description: 'Representing the document used to perform the identity verification. '
      additionalProperties: false
    DocumentEvidenceDetailsIssuer:
      type: object
      required:
        - Name
        - Address
        - CountryCode
        - Jurisdiction
      properties:
        Name:
          type: string
          description: |
            Designation of the issuer of the document.
        Address:
          $ref: '#/components/schemas/AEPostalAddress'
        CountryCode:
          $ref: '#/components/schemas/CountryCode'
        Jurisdiction:
          type: string
          description: >
            String containing the name of the region(s)/state(s)/province(s)/municipality(ies) that issuer has
            jurisdiction over (if this information is not common knowledge or derivable from the address)
      description: Containing information about the issuer of this document.
      additionalProperties: false
    DocumentEvidenceDetailsType:
      type: string
      enum:
        - passport
        - driving_permit
        - idcard
        - residence_permit
        - emirates_id
      description: >
        The type of document used for evidence checking

        [https://bitbucket.org/openid/ekyc-ida/wiki/identifiers](https://bitbucket.org/openid/ekyc-ida/wiki/identifiers)"
    DocumentEvidenceType:
      type: string
      enum:
        - document
    DocumentEvidenceVerifier:
      type: object
      required:
        - Organization
      properties:
        Organization:
          type: string
          description: String denoting the organization which performed the verification on behalf of the OP.
        Txn:
          type: string
          description: >-
            Identifier referring to the identity verification transaction. The OP MUST ensure that the transaction
            identifier can be resolved into transaction details during an audit.
      description: >-
        Denoting the legal entity that performed the identity verification. This object SHOULD be included if the OP did
        not perform the identity verification itself. This object is retained for backward compatibility, implementers
        are recommended to use CheckDetails & Organization instead
      additionalProperties: false
    ElectronicRecordEvidenceType:
      type: string
      enum:
        - electronic_record
    ElectronicRecordProperties:
      type: object
      required:
        - Type
        - PersonalNumber
        - CalendarType
        - CreatedAt
        - DateOfExpiry
        - Source
      properties:
        Type:
          $ref: '#/components/schemas/ElectronicRecordType'
        PersonalNumber:
          type: string
          description: >
            String representing an identifier that is assigned to the User and is not limited to being used in one
            record, for example a national identification number, personal identity number, citizen number, social
            security number, driver number, account number, customer number, licensee number, etc.
        CalendarType:
          $ref: '#/components/schemas/AEPartyCalendarType'
        CreatedAt:
          $ref: '#/components/schemas/ISODateTime'
        DateOfExpiry:
          $ref: '#/components/schemas/ISODateTime'
        Source:
          $ref: '#/components/schemas/ElectronicRecordSourceProperties'
      description: |
        Representing the record used to perform the identity verification.
      additionalProperties: false
    ElectronicRecordSourceProperties:
      type: object
      required:
        - Name
        - Address
        - CountryCode
        - Jurisdiction
      properties:
        Name:
          type: string
          description: |
            Designation of the source of the electronic_record
        Address:
          $ref: '#/components/schemas/AEPostalAddress'
        CountryCode:
          $ref: '#/components/schemas/CountryCode'
        Jurisdiction:
          type: string
          description: >
            String containing the name of the region(s) / state(s) / province(s) / municipality(ies) that source has
            jurisdiction over (if it's not common knowledge or derivable from the address)
      description: |
        Information about the source of this record
      additionalProperties: false
    ElectronicRecordType:
      type: string
      enum:
        - bank_account
        - mortgage_account
        - finance_account
      description: |
        String denoting the type of electronic record
    EvidenceMetadata:
      type: object
      required:
        - EvidenceClassification
      properties:
        EvidenceClassification:
          type: string
      description: >-
        Object indicating any meta data about the evidence that is required by the AssuranceProcess in order to
        demonstrate compliance with the TrustFramework. It has the following sub-elements
      additionalProperties: false
    EvidenceRef:
      type: object
      required:
        - Txn
        - EvidenceMetadata
      properties:
        Txn:
          type: string
          description: Identifier referring to the txn used in the CheckDetails.
        EvidenceMetadata:
          $ref: '#/components/schemas/EvidenceMetadata'
      description: Evidence being referred to
      additionalProperties: false
    LinksResource:
      type: object
      required:
        - Self
      properties:
        Self:
          $ref: '#/components/schemas/Self'
        First:
          $ref: '#/components/schemas/First'
        Prev:
          $ref: '#/components/schemas/Prev'
        Next:
          $ref: '#/components/schemas/Next'
        Last:
          $ref: '#/components/schemas/Last'
      description: Links relevant to the resource
      additionalProperties: false
    TrustFrameworkCode:
      type: string
      enum:
        - FI
      description: >-
        Identifies the trust framework used for verification. This consists of a set of rules and standards and sets out
        requirements so that organisations know what ‘good’ identity verification looks like.


        Permitted values:


        * `FI` — the LFI (Financial Institution) has carried out verification of the customer details based on its own
        processes adhering to UAE legislation for KYC and AML.


        Mirrors `CbuaeVerifiedClaim.verification.trustFramework` in the Ozone Connect Bank Data Sharing API so that the
        value emitted by an LFI can be passed through to the TPP-facing surface without translation.


        Trust Frameworks:
        [https://bitbucket.org/openid/ekyc-ida/wiki/identifiers](https://bitbucket.org/openid/ekyc-ida/wiki/identifiers)
    VerifiedClaim:
      type: object
      required:
        - Claims
      properties:
        Verification:
          $ref: '#/components/schemas/VerifiedClaimVerification'
        Claims:
          oneOf:
            - $ref: '#/components/schemas/Claims'
            - $ref: '#/components/schemas/CorporateClaims'
          discriminator:
            propertyName: IdentityType
            mapping:
              Person: '#/components/schemas/Claims'
              Business: '#/components/schemas/CorporateClaims'
          description: >
            Standard Claims: 

            [https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims)

            IdentityAssurance Claims:

            [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-claims](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-claims)
      description: >
        Verified Claims

        Container object containing entries for the trust framework and the evidence used to verify the claims

        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-representing-verified-claim](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-representing-verified-claim)
      additionalProperties: false
    VerifiedClaimVerification:
      type: object
      required:
        - TrustFramework
      properties:
        TrustFramework:
          $ref: '#/components/schemas/TrustFrameworkCode'
        AssuranceLevel:
          type: string
          description: >
            Determines the assurance level associated with the User in the respective VerifiedClaims. The value range
            depends on the respective TrustFramework value.

            Assurance Level:
            [https://bitbucket.org/openid/ekyc-ida/wiki/identifiers](https://bitbucket.org/openid/ekyc-ida/wiki/identifiers)
        AssuranceProcess:
          $ref: '#/components/schemas/AssuranceProcess'
        Time:
          anyOf:
            - $ref: '#/components/schemas/ISODateTime'
          description: >
            Representing the date and time when the identity verification process took place. All dates in the JSON
            payloads are represented in ISO 8601 date-time format. All date-time fields in responses must include the
            timezone. An example is below: 2017-04-05T10:43:07+00:00
        VerificationProcess:
          type: string
          description: >
            Unique reference to the identity verification process as performed by the OP. Used for identifying and
            retrieving details in case of disputes or audits. Presence of this element might be required for certain
            trust frameworks.
        Evidence:
          description: >
            The type of evidence allowed for providing verification.

            OpenID Connect for Identity Assurance 1.0:
            [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-element](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-evidence-element)
          anyOf:
            - $ref: '#/components/schemas/AEPartyIdentityEvidenceTypeDocument'
            - $ref: '#/components/schemas/AEPartyIdentityEvidenceTypeElectronicRecord'
      description: >
        Verification

        [https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-verification-element](https://openid.net/specs/openid-connect-4-identity-assurance-1_0.html#name-verification-element)
      additionalProperties: false

    # Extended Product Enhancement

    AESubTransactionType:
      type: string
      enum:
        - Purchase
        - Reversal
        - Refund
        - Withdrawal
        - WithdrawalReversal
        - Deposit
        - DepositReversal
        - MoneyTransfer
        - Repayments
        - Interest
        - Fee
        - Charges
        - Profit
        - Disbursement
        - Adjustment
        - Tax
        - Rewards
        - NotApplicable
        - LeaseRepayment
    AEBalanceCategory:
      type: string
      enum:
        - Principal
        - Interest
        - FeesAndCharges
        - PastDue
        - Profit
        - Rental
    AEShariaFlag:
      description: A flag to denote if the Product is Sharia Compliant
      type: boolean
      default: false
    AEAmountWithCategorization:
      type: object
      required:
        - BalanceCategory
        - Amount
      properties:
        BalanceCategory:
          $ref: '#/components/schemas/AEBalanceCategory'
        BalanceDescription:
          description: Allows a description to provided of the balance to identify the specific Shari’ah compliant 
            charges, payments, and rewards made which can affect the balance.
          type: string
          minLength: 1
          maxLength: 500
        Amount:
          description: The value of the categorized balance, incorporating `Amount` and `Currency`.
          type: object
          required:
          - Amount
          - Currency
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
    AEBalanceWithCategorization:
      type: object
      required:
      - Amount
      properties:
        Amount:
          description: The value of the balance on account, incorporating `Amount` and `Currency`.
          type: object
          required:
          - Amount
          - Currency
          properties:
            Amount:
              $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
            Currency:
              $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
        Components:
          description: Components of the stated balance, defined by the value of `BalanceCategory`, that reflects a
            portion of the stated balance.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AEAmountWithCategorization'
    AEStatements:
      type: object
      required:
        - AccountId
        - AccountSubType
        - Statements
      properties:
        AccountId:
          description: "\r\nA unique and immutable identifier produced by the LFI to identify the account resource.This identifier has no meaning to the account owner."
          type: string
        AccountSubType:
          $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountSubTypeCode'
        Statements:
          description: >-
            Array containing details of periodic statements. Each statement includes key financial metrics, balances,
            summaries, and payment details for a specific statement cycle
          type: array
          items:
            type: object
            required:
              - StatementId
              - StatementDate
              - OpeningDate
              - ClosingDate
              - OpeningBalance
              - ClosingBalance
              - Summary
            properties:
              StatementId:
                description: Unique identifier/reference for the statement
                type: string
              StatementDate:
                description: Date the statement was issued/generated
                type: string
                format: date
              OpeningDate:
                description: Start date of the statement period
                type: string
                format: date
              ClosingDate:
                description: End date of the statement period
                type: string
                format: date
              CreditLine:
                $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
              OpeningBalance:
                allOf:
                  - description: Object containing opening balance details
                    type: object
                    required:
                      - CreditDebitIndicator
                    properties:
                      CreditDebitIndicator:
                        description: Indicates whether the closing balance is a credit or a debit
                        type: string
                        enum:
                          - Credit
                          - Debit                    
                  - $ref: '#/components/schemas/AEBalanceWithCategorization'
              ClosingBalance:
                allOf:
                  - description: Object containing closing balance details
                    type: object
                    required:
                      - CreditDebitIndicator
                    properties:
                      CreditDebitIndicator:
                        description: Indicates whether the closing balance is a credit or a debit
                        type: string
                        enum:
                          - Credit
                          - Debit                    
                  - $ref: '#/components/schemas/AEBalanceWithCategorization'
              Summary:
                description: Array providing an aggregated summary of financial activities within the statement period, 
                  such as Purchase, Repayments, Fee, and Interest/Profit. Each object contains the total aggregated 
                  amount, currency, and the count of transactions for the corresponding SubTransactionType.
                type: array
                items:
                  type: object
                  required:
                    - CreditDebitIndicator
                    - SubTransactionType
                    - Amount
                    - Count
                  properties:
                    CreditDebitIndicator:
                      description: Indicates whether the summarized activity is a credit or a debit
                      type: string
                      enum:
                        - Credit
                        - Debit
                    TransactionType:
                      description: Type of transaction activity.
                      type: string
                      enum:
                        - POS
                        - ECommerce
                        - ATM
                        - BillPayments
                        - LocalBankTransfer
                        - SameBankTransfer
                        - InternationalTransfer
                        - Teller
                        - Cheque
                        - Other
                    SubTransactionType:
                      $ref: '#/components/schemas/AESubTransactionType'
                    Amount:
                      $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
                    Count:
                      description: Number of transactions or occurrences for the transaction type
                      type: number
              ExpectedNextStatement:
                description: Object containing projected finance charges or fees expected in the next statement cycle.
                type: array
                minItems: 1
                items:
                  type: object
                  minProperties: 1
                  properties:
                    Type:
                      description: Statement type.
                      type: string
                      enum:
                      - Purchase
                      - Reversal
                      - Refund
                      - Withdrawal
                      - WithdrawalReversal
                      - Deposit
                      - DepositReversal
                      - MoneyTransfer
                      - Repayments
                      - Interest
                      - Fee
                      - Charges
                      - Profit
                      - Disbursement
                      - Adjustment
                      - Tax
                      - Rewards
                      - NotApplicable
                    Amount:
                      description: Statement amount, according to `Type` value.
                      type: object
                      required:
                      - Amount
                      - Currency
                      properties:
                        Amount:
                          $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
                        Currency:
                          $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
              NextPayment:
                description: Object containing details related to the next payment due
                type: array
                items:
                  type: object
                  required:
                    - Date
                    - Amount
                  properties:
                    Date:
                      description: Payment due date
                      type: string
                      format: date
                    Amount:
                      $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
                    Type:
                      description: Type of payment - minimum, scheduled, estimated, or other
                      type: string
                      enum:
                        - Minimum
                        - Scheduled
                        - Estimated
                        - Other

    AEDuration:
      type: string
      pattern: ^P(\d+Y)?(\d+M)?$
      format: duration
      description: A period of time implemented using ISO 8601 compatible duration format
      example: P2Y3M

    AEProductAssetBackedProducts:
      description: Array containing details of collateral required or pledged for the product
      type: array
      items:
        type: object
        required:
          - Type
          - AssetType
          - Description
        properties:
          Type:
            description: Defines how the financed asset is treated as security. Use `Collateral`` when the asset is 
              owned by the customer and pledged as security. Use `OwnershipTransfer`` when the asset is owned by the 
              bank and will be transferred to the customer under Islamic finance structures at the end of the 
              finance.
            type: string
            enum:
            - Collateral
            - OwnershipTransfer
          AssetType:
            description: Defines the specific category of collateral pledged to secure a financial product, 
              applicable across both conventional and Islamic finance structures. This field classifies the nature 
              of the asset or guarantee—such as real estate, salary assignment, or vehicle lien—used to mitigate 
              credit risk and support underwriting decisions.
            type: string
            enum:
            - Property
            - SalaryAssignment
            - EndOfServiceGratuity
            - SalaryAndGratuityAssignment
            - FixedDepositLien
            - Vehicle
            - TakafulPolicy
            - Rahn
            - PostDatedCheque
            - Other
          Description:
            description: >-
              Provides a free-text explanation or contextual detail about the collateral pledged to secure a 
              financial product. This may include asset characteristics, legal references, or contractual notes 
              relevant to underwriting and risk assessment.
            type: string
          Valuation:
            type: array
            items:
              type: object
              properties:
                Date:
                  description: Date of the valuation.
                  type: string
                  format: date
                Amount:
                  $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
          SupplementaryInformation:
            description: Additional data or metadata not captured in the main fields, to provide further context.
            type: object
          OwnershipTransfer:
            description: Details on how the asset will be transferred from the LFI to the customer.
            type: object
            required:
            - Type
            properties:
              TransferOfOwnershipDate:
                description: Expected date when ownership will be transferred to the customer
                type: string
                format: date
              Type:
                description: Method of ownership transfer.
                type: string
                enum:
                - Gift
                - TokenPurchase
                - Gradual
                - SeparateSaleContract
              Method:
                description: The event that triggers the ownership transfer event.
                type: string
                enum:
                - EndOfLease
                - Buyouts
              TokenPurchaseAmount:
                description: The amount and currency to be paid by the customer to the LFI at token purchase.
                  Required when `Type` is `TokenPurchase`.
                type: object
                required:
                - Amount
                - Currency
                properties:
                  Amount:
                    $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
                  Currency:
                    $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
              BuyoutSchedule:
                description: Amount and currency to be paid each period by the customer to buy out the bank's share.
                  Applies to Diminishing Musharaka Islamic finance products. Required when `Type` is `Gradual`.
                type: object
                required:
                - Frequency
                - BuyoutAmount
                properties:
                  Frequency:
                    description: The frequency of the payments made by the customer to buy out the bank's share.
                    type: string
                    enum:
                    - Weekly
                    - Fortnightly
                    - Monthly
                    - Quarterly
                    - HalfYearly
                    - Annual
                    - Other
                  BuyoutAmount:
                    description: The buyout amount the customer must pay during each period.
                    type: object
                    required:
                    - Amount
                    - Currency
                    properties:
                      Amount:
                        $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
                      Currency:
                        $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
              SaleAgreement:
                description: Confirm the details of the sale contract to be executed after lease completion.
                  Required when `Type` is `SeparateSaleContract`.
                type: object
                required:
                  - Required
                properties:
                  Required:
                    description: Boolean indicator to confirm whether a formal sale agreement is required for 
                      ownership transfer.
                    type: boolean
                  Execution:
                    description: Specifies when the sale contract is executed.
                    type: string
                    enum:
                    - AtLeaseCompletion
                    - CustomerRequestPostLease
                  Price:
                    description: Represents the nominal or token purchase price agreed for the final transfer of the property.
                    type: object
                    required:
                    - Amount
                    - Currency
                    properties:
                      Amount:
                        $ref: '#/components/schemas/AEActiveCurrencyAndAmount_SimpleType'
                      Currency:
                        $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
              TransferConditions:
                description: |
                  Conditions that must be met before ownership can be transferred to the customer. The following
                  values are allowed:

                  * `AllLeasePaymentsCompleted``:  All lease obligations must be fulfilled before the sale contract 
                    is executed.

                  * `CustomerRequestRequired`: The customer must formally request the transfer of ownership via a 
                    gift after completing all lease payments.  Applicable when the `Type` is `Gift`.

                  * `SaleAgreementExecuted`: A separate sale agreement must be formally executed between the bank 
                    and the customer to transfer ownership at the end of the lease term.  Applicable when the 
                    `Type` is `TokenPurchase`.

                  * `AllBuyoutsCompleted`:  Included when the customer has purchased all the banks shares in the 
                    property.  Applicable when the `Type` is `Gradual`.

                  * `IndependentSaleContractSigned`: A separate sale agreement must be signed before the legal 
                    transfer of ownership can be completed.  Applicable when the `Type` is `SeparateSaleContract`.
                type: array
                minItems: 1
                items:
                  type: string
                  enum:
                  - AllLeasePaymentsCompleted
                  - CustomerRequestRequired
                  - SaleAgreementExecuted
                  - AllBuyoutsCompleted
                  - IndependentSaleContractSigned
        additionalProperties: false

    AEProductRewardsBenefitsBaseProperties:
      description: Rewards applicable to the banking product with confirmation of the current balance when applicable.
      type: object
      required:
      - Name
      properties:
        Name:
          description: Name of the reward or benefit program.
          type: string
        Description:
          description: Description of the reward or benefit program.
          type: string

    AEProductRewardsBenefitsCashbackProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Cashback benefit or reward.
        type: object
        required:
        - Type
        properties:
          Type:
            type: string
            enum:
            - Cashback
          Balance:
            description: The current Cashback balance available or to be paid to the customer.
            allOf:
              - $ref: '#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0'
          RewardBasis:
            description: Details how cashback can be earned by the customer.
            type: array
            minItems: 1
            items:
              type: string
          FrequencyPaid:
            description: When the Cashback is paid to the customer.
            type: string
            enum:
            - Daily
            - Weekly
            - Monthly
            - Quarterly
            - HalfYearly
            - Annually
            - UponRequest
            - Other

    AEProductRewardsBenefitsPointsProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Points benefit or reward.
        type: object
        required:
        - Type
        - PointsType
        properties:
          Type:
            type: string
            enum:
            - Points
          PointsType:
            description: The type of Points awarded to the customer.
            type: string
          Balance:
            description: The current Points balance available to the customer.
            type: string
          ExpiryDate:
            description: The date the Points will expire if not used.
            type: string
            format: date
          RewardBasis:
            description: Details how Points can be earned by the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductRewardsBenefitsComplimentaryServicesProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Complimentary services benefit or reward.
        type: object
        required:
        - Type
        - RewardBasis
        properties:
          Type:
            type: string
            enum:
            - ComplimentaryServices
          RewardBasis:
            description: Information on the reward or benefit available to the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductRewardsBenefitsDiscountsProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Discounts benefit or reward.
        type: object
        required:
        - Type
        - RewardBasis
        properties:
          Type:
            type: string
            enum:
            - Discounts
          RewardBasis:
            description: Information on the reward or benefit available to the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductRewardsBenefitsLifestyleProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Lifestyle benefit or reward.
        type: object
        required:
        - Type
        - RewardBasis
        properties:
          Type:
            type: string
            enum:
            - Lifestyle
          RewardBasis:
            description: Information on the reward or benefit available to the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductRewardsBenefitsProtectionProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Protection benefit or reward.
        type: object
        required:
        - Type
        - RewardBasis
        properties:
          Type:
            type: string
            enum:
            - Protection
          RewardBasis:
            description: Information on the reward or benefit available to the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductRewardsBenefitsOtherProperties:
      allOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsBaseProperties'
      - description: Other benefit or reward.
        type: object
        required:
        - Type
        - RewardBasis
        properties:
          Type:
            type: string
            enum:
            - Other
          RewardBasis:
            description: Information on the reward or benefit available to the customer.
            type: array
            minItems: 1
            items:
              type: string

    AEProductBenefitRewardsTypes:
      oneOf:
      - $ref: '#/components/schemas/AEProductRewardsBenefitsCashbackProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsPointsProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsComplimentaryServicesProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsDiscountsProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsLifestyleProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsProtectionProperties'
      - $ref: '#/components/schemas/AEProductRewardsBenefitsOtherProperties'
      discriminator:
        propertyName: Type
        mapping:
          Cashback: '#/components/schemas/AEProductRewardsBenefitsCashbackProperties'
          Points: '#/components/schemas/AEProductRewardsBenefitsPointsProperties'
          ComplimentaryServices: '#/components/schemas/AEProductRewardsBenefitsComplimentaryServicesProperties'
          Discounts: '#/components/schemas/AEProductRewardsBenefitsDiscountsProperties'
          Lifestyle: '#/components/schemas/AEProductRewardsBenefitsLifestyleProperties'
          Protection: '#/components/schemas/AEProductRewardsBenefitsProtectionProperties'
          Other: '#/components/schemas/AEProductRewardsBenefitsOtherProperties'

    AEProductRewardsBenefitsProperties:
      description: List of benefits and rewards associated with a product.
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/AEProductBenefitRewardsTypes'

    AEProductInterestCalculationMethod:
      description: Method used to calculate interest or profit, depending on the product type
      type: string
      enum:
        - PrincipalBalance
        - OutstandingBalance
        - InitialDrawdownAmount

    AEProductRateFrequencyCodes:
      type: string
      enum:
        - Monthly
        - Daily
        - Quarterly
        - Annually

    AEProductCalculationFrequency:
      allOf:
        - description: Describes how often the interest rate is calculated
        - $ref: '#/components/schemas/AEProductRateFrequencyCodes'

    AEProductApplicationFrequency:
      allOf:
        - description: Describes how often the rate is charged, especially in relation to the conditions or triggers 
            (e.g., monthly, one-off, or on each trigger)
        - $ref: '#/components/schemas/AEProductRateFrequencyCodes'

    AEProductInterestCalculationMethodProperties:
      type: object
      properties:
        InterestCalculationMethod:
          $ref: '#/components/schemas/AEProductInterestCalculationMethod'

    AEProductProfitCalculationMethodProperties:
      type: object
      properties:
        ProfitCalculationMethod:
          $ref: '#/components/schemas/AEProductInterestCalculationMethod'

    AEProductFinanceRateProperties:
      description: Details of the annual percentage rate
      type: object
      minProperties: 1
      properties:
        AnnualPercentageRate:
          description: The annual percentage rate for the product.
          type: object
          minProperties: 1
          properties:
            StartingFrom:
              description: The starting annual percentage rate.
            UpTo:
              description: The maximum annual percentage rate.
              type: number
            AdditionalInformation:
              description: Additional notes or clarifications about the annual percentage rate.
              type: string
        Tiers:
          description: The tiers of the finance profit rate product.
          type: array
          minItems: 1
          items:
            type: object
            description: The tier of the finance profit rate product.
            required:
            - Name
            - Unit
            properties:
              Name:
                type: string
                description: The name of the tier.
              Unit:
                type: string
                enum:
                  - Balance
                  - LTV
                  - Rate
                description: The unit of the tier.
              ApplicationMethod:
                description: Specifies whether the tier rate is applied only to the balance within the defined balance
                  band or to the customers entire balance once that tier level is reached.
                type: string
                enum:
                - PerTier
                - WholeBalance
              BalanceTierDetails:
                description: Required when `Unit` is set to `Balance`. Describes balance tier range values.
                type: array
                minItems: 1
                items:
                  type: object
                  properties:
                    MinimumTierValue:
                      $ref: "#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0"
                    MaximumTierValue:
                      $ref: "#/components/schemas/AEActiveOrHistoricCurrencyAndAmount_0"
                    TierRate:
                      description: The tier rate.
                      type: number
              LTVTierDetails:
                description: Required when `Unit` is set to `LTV`. Defines the interest rate or profit rate applicable 
                  to each Loan-to-Value (LTV) range where different rates apply.
                type: array
                minItems: 1
                items:
                  type: object
                  minProperties: 1
                  properties:
                    LTVStart:
                      description: Start rate for LTV Tier
                      type: number
                    LTVEnd:
                      description: End rate for LTV Tier
                      type: number
                    TierRate:
                      description: The tier rate.
                      type: number
              RateRange:
                description: Required when `Unit` is set to `Rate`. Defines the minimum and maximum interest rate or 
                  profit rate range that a customer may be eligibility for, depending on factors such as their credit 
                  score, income, etc.
                type: object
                properties:
                  MinimumRate:
                    description: Minimum rate range
                    type: number
                  MaximumRate:
                    description: Maximum rate range
                    type: number
                  AdditionalInformation:
                    description: Additional information on rate range
                    type: string
        Conditions:
          description: A set of conditions under which the finance rate applies.
          type: array
          items:
            $ref: '#/components/schemas/AEProductConditions'
        Notes:
          type: string
          description: Additional notes or clarifications about the rate structure/charge
          minLength: 1
          maxLength: 500
        AdditionalInformation:
          type: array
          description: The additional information of the finance profit rate product.
          items:
            type: object
            properties:
              Type:
                type: string
                enum:
                  - Other
                description: The type of additional information.
              Description:
                type: string
                description: The description of the additional information.

    AEProductVariableRateProperties:
      description: Properties of a variable rate associated with all or part of a product.
      type: object
      properties:
        Description:
          description: Description of the rate.
          type: string
        Rate:
          description: Value of the rate.
          type: number
        BenchMark:
          description: Rate benchmark.
          type: string
        BenchMarkRate:
          description: Benchmark rate value.
          type: number
        Margin:
          description: Margin added to the base rate to determine the effective rate
          type: number
        RateReviewFrequency:
          $ref: '#/components/schemas/AEDuration'
        RateReviewNextDate:
          description: Date for next review of the rate.
          type: string
          format: date
        CalculationFrequency:
          $ref: '#/components/schemas/AEProductCalculationFrequency'
        ApplicationFrequency:
          $ref: '#/components/schemas/AEProductApplicationFrequency'

    AEProductFixedRateProperties:
      description: Properties of a fixed rate associated with all or part of a product.
      type: object
      properties:
        Description:
          description: Description of the rate.
          type: string
        Rate:
          description: Value of the rate.
          type: number
        FixedRateEndDate:
          description: End date for the fixed rate period.
          type: string
          format: date
        CalculationFrequency:
          $ref: '#/components/schemas/AEProductCalculationFrequency'
        ApplicationFrequency:
          $ref: '#/components/schemas/AEProductApplicationFrequency'

    AEProductVariableInterestRateProperties:
      description: Properties of a variable interest rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a variable interest rate
          type: string
          enum:
            - VariableInterest
      allOf:
        - $ref: '#/components/schemas/AEProductVariableRateProperties'
        - $ref: '#/components/schemas/AEProductInterestCalculationMethodProperties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductVariableProfitRateProperties:
      description: Properties of a variable profit rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a variable profit rate
          type: string
          enum:
            - VariableProfit
      allOf:
        - $ref: '#/components/schemas/AEProductVariableRateProperties'
        - $ref: '#/components/schemas/AEProductProfitCalculationMethodProperties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductFixedInterestRateProperties:
      description: Properties of a fixed interest rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a fixed interest rate
          type: string
          enum:
            - FixedInterest
      allOf:
        - $ref: '#/components/schemas/AEProductFixedRateProperties'
        - $ref: '#/components/schemas/AEProductInterestCalculationMethodProperties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductFixedProfitRateProperties:
      description: Properties of a fixed profit rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a fixed profit rate
          type: string
          enum:
            - FixedProfit
      allOf:
        - $ref: '#/components/schemas/AEProductFixedRateProperties'
        - $ref: '#/components/schemas/AEProductProfitCalculationMethodProperties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductFixedRateEndProperties:
      type: object
      properties:
        FixedRateEnd:
          description: Information on actions by LFI at end of fixed term period.
          type: string

    AEProductVariableTermProperties:
      type: object
      properties:
        VariableTerm:
          description: The variable term period
          allOf:
          - $ref: '#/components/schemas/AEDuration'

    AEProductHybridInterestRateProperties:
      description: Properties of an interest rates with a fixed and variable element
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries an interest rate and has both fixed and variable elements
          type: string
          enum:
            - HybridInterest
        FixedRate:
          allOf:
            - $ref: '#/components/schemas/AEProductFixedRateProperties'
            - $ref: '#/components/schemas/AEProductInterestCalculationMethodProperties'
            - $ref: '#/components/schemas/AEProductFinanceRateProperties'
            - $ref: '#/components/schemas/AEProductFixedRateEndProperties'
        VariableRate:
          allOf:
            - $ref: '#/components/schemas/AEProductVariableRateProperties'
            - $ref: '#/components/schemas/AEProductInterestCalculationMethodProperties'
            - $ref: '#/components/schemas/AEProductFinanceRateProperties'
            - $ref: '#/components/schemas/AEProductVariableTermProperties'
      allOf:
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductHybridProfitRateProperties:
      description: Properties of a profit rates with a fixed and variable element
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a profit rate and has both fixed and variable elements
          type: string
          enum:
            - HybridProfit
        FixedRate:
          allOf:
            - $ref: '#/components/schemas/AEProductFixedRateProperties'
            - $ref: '#/components/schemas/AEProductProfitCalculationMethodProperties'
            - $ref: '#/components/schemas/AEProductFinanceRateProperties'
            - $ref: '#/components/schemas/AEProductFixedRateEndProperties'
        VariableRate:
          allOf:
            - $ref: '#/components/schemas/AEProductVariableRateProperties'
            - $ref: '#/components/schemas/AEProductProfitCalculationMethodProperties'
            - $ref: '#/components/schemas/AEProductFinanceRateProperties'
            - $ref: '#/components/schemas/AEProductVariableTermProperties'
      allOf:
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductFinanceRates:
      title: Cleartext Finance Rate Data
      oneOf:
        - $ref: '#/components/schemas/AEProductFixedInterestRateProperties'
        - $ref: '#/components/schemas/AEProductFixedProfitRateProperties'
        - $ref: '#/components/schemas/AEProductVariableInterestRateProperties'
        - $ref: '#/components/schemas/AEProductVariableProfitRateProperties'
        - $ref: '#/components/schemas/AEProductHybridInterestRateProperties'
        - $ref: '#/components/schemas/AEProductHybridProfitRateProperties'
      discriminator:
        propertyName: RateType
        mapping:
          FixedInterest: '#/components/schemas/AEProductFixedInterestRateProperties'
          FixedProfit: '#/components/schemas/AEProductFixedProfitRateProperties'
          VariableInterest: '#/components/schemas/AEProductVariableInterestRateProperties'
          VariableProfit: '#/components/schemas/AEProductVariableProfitRateProperties'
          HybridInterest: '#/components/schemas/AEProductHybridInterestRateProperties'
          HybridProfit: '#/components/schemas/AEProductHybridProfitRateProperties'

    AEProductDepositRates:
      type: object
      required:
      - RateType
      - RateDetails
      properties:
        RateType:
          description: The deposit rate type
          type: string
          enum:
            - FixedInterest
            - FixedProfit
            - VariableInterest
            - VariableProfit
        RateDetails:
          $ref: '#/components/schemas/AEProductRateDetails1Properties'

    AEProductRateDetails1Properties:
      description: Details of the deposit rates
      type: array
      minItems: 1
      items:
        description: Details of the fixed or variable rates that are available to the customer or is applicable to 
          the customers product.
        type: object
        minProperties: 1
        properties:
          RateCategory:
            description: Confirmation what the rate relates to.
            type: string
            enum:
            - Applied 
            - Standard 
            - Bonus 
            - Introductory 
            - Other 
          AnnualRate:
            description: The annual rate applied when a single rate is applicable.
            type: number
          AnnualRateRange:
            description: When a rate range applies
            type: object
            minProperties: 1
            properties:
              MinRate:
                description: The minimum rate that could apply
                type: number
              MaxRate:
                description: The maximum rate that could apply
                type: number
          Tier:
            description: Applicable when a rate applies to a balance tier or band.
            type: object
            minProperties: 1
            properties:
              MinBalance:
                description: The minimum tier or band balance.
                type: string
              MaxBalance:
                description: The maximum tier or band balance.
                type: string
              Currency:
                $ref: '#/components/schemas/ActiveOrHistoricCurrencyCode_1'
          Term:
            description: ISO 8601 duration of the fixed rate or the introductory/bonus rate.
            allOf:
            - $ref: '#/components/schemas/AEDuration'
          EffectiveDate:
            description: When applicable, the date when the bonus or introductory rate will be expire.
            type: string
            format: date
          ExpiryDate:
            description: When applicable, the date when the bonus or introductory rate is effective from.
            type: string
            format: date
          CalculationMethod:
            description: The balance used to calculate the interest or profit.
            type: string
            enum:
            - DailyClosingBalance
            - MinimumMonthlyBalance
            - AverageDailyBalance 
            - AverageMonthlyBalance 
            - AccountOpeningBalance
            - NotApplicable 
            - Other
          CalculationFrequency:
            description: The frequency the interest or profit is calculated.
            type: string
            enum: 
            - Monthly
            - Daily
            - Quarterly
            - HalfYearly
            - Annually
            - NotApplicable
          ApplicationFrequency:
            description: When the interest or profit is applied to the account.
            type: string
            enum:
            - Monthly
            - Daily
            - Quarterly
            - HalfYearly
            - Annually
            - NotApplicable
          Notes:
            description: Additional free-text notes.
            type: string

    ## Authorization Endpoints Schema Objects

    AEBankDataSharingRichAuthorizationRequests.AEBankDataSharingFromDate:
      type: string
      format: date
      description: >-
        Specified start date for the transaction or statement query period.


        If this is not populated, the start date will be open ended, and data will be returned from the earliest
        available transaction or statement.


        All dates in the JSON payloads are represented in ISO 8601 date format.  For example: 2025-01-01
    AEBankDataSharingRichAuthorizationRequests.AEBankDataSharingToDate:
      type: string
      format: date
      description: >-
        Specified end date for the transaction or statement query period.


        If this is not populated, the end date will be open ended, and data will be returned to the latest available
        transaction or the last statement generated.


        All dates in the JSON payloads are represented in ISO 8601 date format.  For example: 2025-12-31    

    AEConsentStatus.AEBankDataSharingOpenFinanceBilling:
      type: object
      required:
        - UserType
        - Purpose
      properties:
        IsLargeCorporate:
          type: boolean
          description: Customer has more than 100 million AED turnover.
        UserType:
          type: string
          enum:
            - Retail
            - SME
            - Corporate
          description: Type of Customer.
        Purpose:
          type: string
          enum:
            - AccountAggregation
            - RiskAssessment
            - TaxFiling
            - Onboarding
            - Verification
            - QuoteComparison
            - BudgetingAnalysis
            - FinancialAdvice
            - AuditReconciliation
          description: Purpose of data sharing request.
      description: Billing parameters specified by the TPP.
      additionalProperties: false

    AEBankDataSharingRichAuthorizationRequests.OnBehalfOf:
      type: object
      properties:
        TradingName:
          type: string
          description: Trading Name
        LegalName:
          type: string
          description: Legal Name
        IdentifierType:
          type: string
          enum:
            - Other
          description: Identifier Type
        Identifier:
          type: string
          description: Identifier
      description: On Behalf Of
      additionalProperties: false

    AEConsentStatus.AEBankDataSharingConsentPropertiesV21:
      type: object
      required:
        - Data
        - Links
      properties:
        Data:
          type: object
          properties:
            ConsentId:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentId'
            BaseConsentId:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEBaseConsentId'
            CreationDateTime:
              $ref: '#/components/schemas/AEConsentStatus.AECreationDateTime'
            Status:
              $ref: '#/components/schemas/AEConsentStatus.AEConsentStatusCodes'
            StatusUpdateDateTime:
              $ref: '#/components/schemas/AEConsentStatus.AEStatusUpdateDateTime'
            Permissions:
              type: array
              items:
                $ref: '#/components/schemas/AEBankDataSharingConsentPermissionCodes'
              minItems: 1
            ExpirationDateTime:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentExpirationDateTime'
            TransactionFromDateTime:
              type: string
              format: date-time
              description: '**DEPRECATED AT V2.1, REPLACED BY `FromDate`**'
              deprecated: true
            TransactionToDateTime:
              type: string
              format: date-time
              description: '**DEPRECATED AT V2.1, REPLACED BY `ToDate`**'
              deprecated: true
            FromDate:
              $ref: '#/components/schemas/AEBankDataSharingRichAuthorizationRequests.AEBankDataSharingFromDate'
            ToDate:
              $ref: '#/components/schemas/AEBankDataSharingRichAuthorizationRequests.AEBankDataSharingToDate'
            AccountType:
              type: array
              items:
                $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountTypeCode'
            AccountSubType:
              type: array
              items:
                $ref: '#/components/schemas/AEBankDataSharing.AEExternalAccountSubTypeCode'
              description: Account Sub Types permitted under the consent.
            OnBehalfOf:
              $ref: '#/components/schemas/AEBankDataSharingRichAuthorizationRequests.OnBehalfOf'
            OpenFinanceBilling:
              $ref: '#/components/schemas/AEConsentStatus.AEBankDataSharingOpenFinanceBilling'
            RevokedBy:
              $ref: '#/components/schemas/AEConsentStatus.AERevokedByCodes'
          required:
            - ConsentId
            - CreationDateTime
            - Status
            - StatusUpdateDateTime
            - Permissions
            - ExpirationDateTime
            - OpenFinanceBilling
          additionalProperties: false
        Subscription:
          $ref: '#/components/schemas/AEStandardModels.AEEventNotification'
        Links:
          $ref: '#/components/schemas/AEStandardModels.AELinksSelf'
        Meta:
          $ref: '#/components/schemas/AEStandardModels.AEMeta'
      additionalProperties: false
    AEConsentStatus.AECreationDateTime:
      type: string
      format: date-time
      description: >-
        Date and time at which the Consent was created. All dates in the JSON payloads are represented in ISO 8601
        date-time format.


        All date-time fields in responses must include the timezone, for example: 2023-04-05T10:43:07+00:00
    AEPushedAuthorizationRequests.AEBaseConsentId:
      type: string
      minLength: 1
      maxLength: 128
      description: >-
        The original ConsentId assigned by the TPP.

        It is used by the TPP for updating/renewing parameters associated with long-lived consents.

        It must be provided when long-lived consent parameters are updated/renewed for a current consent that has not
        yet finished.
    AEPushedAuthorizationRequests.AEConsentExpirationDateTime:
      type: string
      format: date-time
      description: |-
        Specified date and time the consent will expire.

        All dates in the JSON payloads are represented in ISO 8601 date-time format.

        All date-time fields in responses must include the timezone, for example: 2023-04-05T10:43:07+00:00
    AEPushedAuthorizationRequests.AEConsentId:
      type: string
      minLength: 1
      maxLength: 128
      description: Unique identification assigned by the TPP to identify the Consent.
    AEConsentStatus.AEConsentStatusCodes:
      type: string
      enum:
        - AwaitingAuthorization
        - Authorized
        - Rejected
        - Revoked
        - Expired
        - Consumed
        - Suspended
      description: |2-
         Specifies the status of a consent.
         
         | Consent Status| State Type| Description|
         |---------------|-----------|------|
         | AwaitingAuthorization | Pending | The consent is awaiting authorization.|
         | Authorized | In Use | The consent has been successfully authorized.|
         | Rejected | Terminal | The unauthorized consent has been rejected at the LFI.|
         | Revoked | Terminal | The consent has been revoked at the TPP or LFI.|
         | Expired | Terminal | The consent is now expired.|
         | Consumed | Terminal | The consented action(s) have either been completed successfully.|
         | Suspended | In Use | The consent has been suspended, pending further enquiries.|
    AEConsentStatus.AEStatusUpdateDateTime:
      type: string
      format: date-time
      description: >-
        Date and time at which the resource status was updated. All dates in the JSON payloads are represented in ISO
        8601 date-time format.


        All date-time fields in responses must include the timezone, for example: 2023-04-05T10:43:07+00:00
    AEBankDataSharingConsentPermissionCodes:
      type: string
      enum:
        - ReadAccountsBasic
        - ReadAccountsDetail
        - ReadBalances
        - ReadBeneficiariesBasic
        - ReadBeneficiariesDetail
        - ReadFXTransactionsBasic
        - ReadFXTransactionsDetail
        - ReadFXRemittanceCharges
        - ReadTransactionsBasic
        - ReadTransactionsDetail
        - ReadProduct
        - ReadScheduledPaymentsBasic
        - ReadScheduledPaymentsDetail
        - ReadDirectDebits
        - ReadStandingOrdersBasic
        - ReadStandingOrdersDetail
        - ReadStatements
        - ReadPartyUser
        - ReadPartyUserIdentity
        - ReadParty
        - ReadProductFinanceRates
      description: The permission codes available to the TPP for Bank Data Sharing and agreed with the User.
    AEBankDataSharing.AEExternalAccountSubTypeCode:
      type: string
      enum:
        - CurrentAccount
        - Savings
        - CreditCard
        - Mortgage
        - Finance
      description: |-
        Specifies the sub type of account (product family group). Supported values:

        * CurrentAccount

        * Savings

        * CreditCard

        * Mortgage

        * Finance
    AEBankDataSharing.AEExternalAccountTypeCode:
      type: string
      enum:
        - Retail
        - SME
        - Corporate
      description: Specifies the type of account (Retail, SME or Corporate).
    AEConsentStatus.AERevokedByCodes:
      type: string
      enum:
        - LFI
        - TPP
        - LFI.InitiatedByUser
        - TPP.InitiatedByUser
      description: |-
        Denotes the Identifier of the revocation.

        | Identifier| Description|
        |-----------|------------|
        | LFI | Revoked by LFI without User initiation|
        | TPP | Revoked by TPP without User initiation|
        | LFI.InitiatedByUser | Initiated by User via the LFI|
        | TPP.InitiatedByUser | Initiated by User via the TPP|
    AEStandardModels.AEEventNotification:
      type: object
      required:
        - Webhook
      properties:
        Webhook:
          type: object
          properties:
            Url:
              type: string
            IsActive:
              type: boolean
          description: A Webhook Schema
          additionalProperties: false
      description: A Webhook Subscription Schema
      additionalProperties: false
    AEStandardModels.AELinksSelf:
      type: object
      required:
        - Self
      properties:
        Self:
          $ref: '#/components/schemas/AEStandardModels.AESelfLink'
      description: Links relevant to the resource
      additionalProperties: false
    AEStandardModels.AEMeta:
      type: object
      description: Metadata relevant to the resource
      additionalProperties: false
    AEStandardModels.AESelfLink:
      type: string
      format: uri
      description: A link to the current resource
    AECreateTPPAttestation1Request:
      type: object
      required:
        - Data
      properties:
        Data:
          $ref: '#/components/schemas/AETPPAttestation1Types'
      description: Create a TPP Attestation against a consent in a terminal status.
      additionalProperties: false
    AECreateTPPAttestationSigned1Request:
      type: object
      required:
        - iss
        - exp
        - nbf
        - message
      properties:
        iss:
          type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)'
        exp:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)'
        nbf:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)'
        aud:
          type: array
          items:
            type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)'
        iat:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)'
        message:
          $ref: '#/components/schemas/AECreateTPPAttestation1Request'
      additionalProperties: false
    AETPPAttestation1Properties:
      type: object
      required:
        - AttestationId
        - AttestationReceivedDateTime
        - RegulatoryDeadlineMetIndicator
        - Attestation
      properties:
        AttestationId:
          description: A unique identifier for the Attestation submitted by the TPP.
          type: string
          format: uuid
        AttestationReceivedDateTime:
          type: string
          format: date-time
          description: >-
            Date and time at which the API Hub received the Attestation.


            All dates in the JSON payloads are represented in ISO 8601 date-time format.

            All date-time fields in responses must include the timezone, as shown in this example:
            2017-04-05T10:43:07+00:00
        RegulatoryDeadlineMetIndicator:
          type: boolean
          description: >-
            Indicates whether the API Hub received the Attestation prior to the regulatory deadline for the
            `AttestationType` being submitted.
        Attestation:
          allOf:
            - $ref: '#/components/schemas/AETPPAttestation1Types'
          description: |-
            A copy of the Attestation submitted by the TPP, as recorded by the API Hub.

            This is included so that the complete record of the Attestation is incorporated in the message signature.
      additionalProperties: false
    AETPPAttestation1Response:
      type: object
      required:
        - Data
        - Links
      properties:
        Data:
          $ref: '#/components/schemas/AETPPAttestation1Properties'
        Links:
          $ref: '#/components/schemas/AEStandardModels.AELinksSelf'
        Meta:
          $ref: '#/components/schemas/AEStandardModels.AEMeta'
      additionalProperties: false
    AETPPAttestation1Types:
      type: object
      allOf:
        - $ref: '#/components/schemas/AETPPDataRetentionDeletionAttestation1Properties'
      description: |-
        The Attestation being submitted.

        At this version the only permitted type is `DataRetentionDeletion`, a Data Retention or Deletion Attestation.
    AETPPAttestationAccessRestriction1Codes:
      type: string
      enum:
        - NotRestricted
        - RestrictedUseOnly
        - Other
      description: |-
        Indicates how access is restricted to the retained data, with the following definitions:

        * `NotRestricted`: Access to the retained data is not restricted.

        * `RestrictedUseOnly`: The retained data may only be accessed for the purpose indicated by `RetentionReason`.

        * `Other`: Access is restricted in another way, which must be described in `AccessRestrictionDescription`.
    AETPPAttestationDataAction1Codes:
      type: string
      enum:
        - Deleted
        - Retained
        - Anonymised
        - ArchivedRestricted
      description: >-
        The action taken by the TPP for the category of data indicated by `DataCategory`, with the following
        definitions:


        * `Deleted`: The data has been deleted by the TPP.


        * `Retained`: The data is retained by the TPP in its original form.


        * `Anonymised`: The data is retained by the TPP in an effectively anonymised form.


        * `ArchivedRestricted`: The data is retained by the TPP in an archive to which access is restricted.
    AEAccountAccessTPPAttestationDataAction1Properties:
      type: object
      required:
        - DataActionType
        - DataCategory
        - AttestationDate
      properties:
        DataActionType:
          allOf:
            - $ref: '#/components/schemas/AETPPAttestationDataAction1Codes'
          description: >-
            The action taken by the TPP for the category of data indicated by `DataCategory`.


            The value `Deleted` is an attestation that the data has been deleted by the TPP.

            The values `Retained`, `Anonymised` and `ArchivedRestricted` are attestations that the data is retained in
            some form.
        DataCategory:
          allOf:
            - $ref: '#/components/schemas/AEAccountAccessTPPAttestationDataCategory1Codes'
          description: The category of data to which the attestation applies.
        AttestationDate:
          type: string
          format: date-time
          description: |-
            Date and time at which the attestation for the data category is made.

            This must be in the past, later than `ConsentRevocationDateTime` where provided, and earlier than
            `AttestationStatusAppliedDateTime`.
        RetentionReason:
          allOf:
            - $ref: '#/components/schemas/AETPPAttestationRetentionReason1Codes'
          description: |-
            Indicates the reason for retaining the consented data.

            Must be provided where `DataActionType` is `Retained`, `Anonymised` or `ArchivedRestricted`.
        RetentionReasonDescription:
          type: string
          minLength: 1
          maxLength: 500
          description: |-
            The reason for retaining the data.

            Must be provided where `DataActionType` is `Retained`, `Anonymised` or `ArchivedRestricted` and
            `RetentionReason` is `Other`.
        RetainedUntilDate:
          type: string
          format: date
          description: |-
            The date until which the TPP will retain the data. This must be in the future.

            Must be provided where `DataActionType` is `Retained`, `Anonymised` or `ArchivedRestricted`.
        AccessRestriction:
          allOf:
            - $ref: '#/components/schemas/AETPPAttestationAccessRestriction1Codes'
          description: |-
            Indicates how access is restricted to the retained data.

            Must be provided where `DataActionType` is `Retained`, `Anonymised` or `ArchivedRestricted`.
        AccessRestrictionDescription:
          type: string
          minLength: 1
          maxLength: 500
          description: |-
            A description of how access to the data is restricted.

            Must be provided where `DataActionType` is `ArchivedRestricted` and `AccessRestriction` is `Other`.
      additionalProperties: false
    AEAccountAccessTPPAttestationDataCategory1Codes:
      type: string
      enum:
        - AllConsentedData
        - ReadAccountsBasic
        - ReadAccountsDetail
        - ReadBalances
        - ReadBeneficiariesBasic
        - ReadBeneficiariesDetail
        - ReadFXTransactionsBasic
        - ReadFXTransactionsDetail
        - ReadFXRemittanceCharges
        - ReadTransactionsBasic
        - ReadTransactionsDetail
        - ReadProduct
        - ReadScheduledPaymentsBasic
        - ReadScheduledPaymentsDetail
        - ReadDirectDebits
        - ReadStandingOrdersBasic
        - ReadStandingOrdersDetail
        - ReadStatements
        - ReadPartyUser
        - ReadPartyUserIdentity
        - ReadParty
        - ReadProductFinanceRates
        - AnalyticsData
        - AuditRecords
      description: |-
        The category of data to which the attestation applies, with the following definitions:

        * `AllConsentedData`: All data for the consent is qualified by the same `DataActionType`.

        * A Permission Code: Where the TPP is retaining some data and deleting other data, the Permission Code
        identifying the data cluster to which the `DataActionType` applies.

        * `AnalyticsData`: Data derived from the consented data for analytics purposes.

        * `AuditRecords`: Records generated based on data access that may contain elements of the consented data.
    AETPPAttestationRetentionReason1Codes:
      type: string
      enum:
        - RegulatoryOrLegalObligation
        - FraudSecurityOrCompliance
        - ComplaintOrDispute
        - ExplicitCustomerAgreement
        - UserRequestedHistory
        - AnonymisedOrAggregatedData
        - Other
      description: |-
        Indicates the reason for retaining the consented data, with the following definitions:

        * `RegulatoryOrLegalObligation`: The data is retained to meet a regulatory or legal obligation.

        * `FraudSecurityOrCompliance`: The data is retained for fraud, security or compliance purposes.

        * `ComplaintOrDispute`: The data is retained in connection with an open complaint or dispute.

        * `ExplicitCustomerAgreement`: The data is retained under an explicit agreement with the customer.

        * `UserRequestedHistory`: The data is retained because the User requested their history is maintained.

        * `AnonymisedOrAggregatedData`: The data is retained in an anonymised or aggregated form.

        * `Other`: The data is retained for another reason, which must be described in `RetentionReasonDescription`.
    AETPPAttestationSigned1Response:
      type: object
      required:
        - iss
        - exp
        - nbf
        - message
      properties:
        iss:
          type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)'
        exp:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)'
        nbf:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)'
        aud:
          type: array
          items:
            type: string
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)'
        iat:
          type: number
          description: '[https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)'
        message:
          $ref: '#/components/schemas/AETPPAttestation1Response'
      additionalProperties: false
    AETPPAttestationType1Codes:
      type: string
      enum:
        - DataRetentionDeletion
      description: |-
        The Attestation Type, indicating the regulatory obligation to which the Attestation relates.

        * `DataRetentionDeletion`: An attestation on data retention and deletion for consented data held by the TPP.
    AETPPAttestations1Response:
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          type: array
          items:
            $ref: '#/components/schemas/AETPPAttestation1Properties'
          description: |-
            The Attestation Events recorded against the consent.

            Each item includes a copy of the Attestation submitted by the TPP.
        Links:
          $ref: '#/components/schemas/LinksResource'
        Meta:
          $ref: '#/components/schemas/MetaTotalPages'
      additionalProperties: false
    AETPPDataRetentionDeletionAttestation1Properties:
      type: object
      required:
        - AttestationType
        - AttestationStatusAppliedDateTime
        - DataAccessCeasedDateTime
        - DataActions
      properties:
        AttestationType:
          allOf:
            - $ref: '#/components/schemas/AETPPAttestationType1Codes'
          description: >-
            The Attestation Type, with the value `DataRetentionDeletion` to indicate an attestation on data retention
            for consented data held by the TPP.
        AttestationStatusAppliedDateTime:
          type: string
          format: date-time
          description: |-
            Date and time at which the Attestation is valid from. This must be in the past.

            All dates in the JSON payloads are represented in ISO 8601 date-time format.
            All date-time fields must include the timezone, as shown in this example: 2017-04-05T10:43:07+00:00
        DataAccessCeasedDateTime:
          type: string
          format: date-time
          description: Date and time at which TPP data access ceased. This must be in the past.
        ConsentRevocationDateTime:
          type: string
          format: date-time
          description: |-
            Date and time at which the User revoked the Consent at the TPP.

            Only provided where the consent was revoked at the TPP, and did not expire or was not consumed.
            Where provided this must be in the past, and earlier than the date and time at which the consent
            was revoked at the API Hub.
        DataActions:
          type: array
          items:
            $ref: '#/components/schemas/AEAccountAccessTPPAttestationDataAction1Properties'
          minItems: 1
          description: |-
            The actions taken by the TPP for each category of data held.

            An Attestation Event must list all `DataCategory` values that apply to the consent.
      description: |-
        An attestation by the TPP that it has completed the review, and any required deletion or anonymisation,
        of data associated with the consent that it is not required or otherwise permitted to retain.
      additionalProperties: false

    AEProductExpectedProfitRate1Properties:
      description: Properties of a deposit rate for a given Sharia product
      type: object
      required:
        - RateType
        - RateDetails
        - DepositRateType
      properties:
        RateType:
          description: The deposit rate type
          type: string
          enum:
            - FixedProfit
            - VariableProfit
        Description:
          description: Describes the available deposit rate
          type: string
          minLength: 1
          maxLength: 500
        DepositRateType:
          type: string
          enum:
            - ExpectedProfitRate
            - IndicativeProfitRate
        ProfitSharingRatio:
          description: Provides the profit sharing ratio for the deposit rate 
          type: string
          minLength: 1
          maxLength: 35
        ProfitDistributionMethod:
          description: Provides the profit distribution method defined for the deposit rate
          type: string
          minLength: 1
          maxLength: 500
        ProfitDistributionFrequency:
          description: Provides the product distribution frequency for the deposit rate
          type: string
          minLength: 1
          maxLength: 70
        RateDetails:
          $ref: '#/components/schemas/AEProductRateDetails1Properties'

    AEProductShariaProfitCalculationMethod1Properties:
      type: object
      properties:
        ProfitCalculationMethod:
          description: Method used to calculate profit, depending on the product type
          type: string
          enum:
            - PrincipalBalance
            - OutstandingBalance
            - InitialDrawdownAmount
            - UnusedCreditLine
            - UtilizedLimit

    AEProductShariaVariableProfitRate1Properties:
      description: Properties of a variable profit rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a variable profit rate
          type: string
          enum:
            - VariableProfit
      allOf:
        - $ref: '#/components/schemas/AEProductVariableRateProperties'
        - $ref: '#/components/schemas/AEProductShariaProfitCalculationMethod1Properties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductShariaFixedProfitRate1Properties:
      description: Properties of a fixed profit rate
      type: object
      required:
      - RateType
      properties:
        RateType:
          description: A product that carries a fixed profit rate
          type: string
          enum:
            - FixedProfit
      allOf:
        - $ref: '#/components/schemas/AEProductFixedRateProperties'
        - $ref: '#/components/schemas/AEProductShariaProfitCalculationMethod1Properties'
        - $ref: '#/components/schemas/AEProductFinanceRateProperties'

    AEProductShariaFinanceRate1Types:
      title: Cleartext Sharia Finance Rate Data
      oneOf:
        - $ref: '#/components/schemas/AEProductShariaFixedProfitRate1Properties'
        - $ref: '#/components/schemas/AEProductShariaVariableProfitRate1Properties'
        - $ref: '#/components/schemas/AEProductHybridProfitRateProperties'
      discriminator:
        propertyName: RateType
        mapping:
          FixedProfit: '#/components/schemas/AEProductShariaFixedProfitRate1Properties'
          VariableProfit: '#/components/schemas/AEProductShariaVariableProfitRate1Properties'
          HybridProfit: '#/components/schemas/AEProductHybridProfitRateProperties'
  parameters:
    Authorization:
      name: authorization
      in: header
      required: true
      description: An authorization Token as per https://tools.ietf.org/html/rfc6750
      schema:
        type: string
    x-customer-user-agent:
      in: header
      name: x-customer-user-agent
      description: Indicates the user-agent that the User is using.
      required: false
      schema:
        type: string
    x-fapi-customer-ip-address:
      in: header
      name: x-fapi-customer-ip-address
      required: false
      description: The User's IP address if the User is currently logged in with the TPP.
      schema:
        type: string
    x-fapi-auth-date:
      in: header
      name: x-fapi-auth-date
      required: false
      description: |-
        The time when the User last logged in with the TPP. 
        All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: 
        Sun, 10 Sep 2017 19:43:31 UTC
      schema:
        type: string
        pattern: >-
          ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4}
          \d{2}:\d{2}:\d{2} (GMT|UTC)$
    x-fapi-interaction-id:
      in: header
      name: x-fapi-interaction-id
      required: false
      description: An RFC4122 UID used as a correlation id.
      schema:
        type: string
    ConsentId:
      name: ConsentId
      in: path
      description: ConsentId
      required: true
      schema:
        type: string
    AccountId:
      name: AccountId
      in: path
      description: AccountId
      required: true
      schema:
        type: string
    FromBookingDateTimeParam:
      in: query
      name: fromBookingDateTime
      description: |-
        The UTC ISO 8601 Date Time to filter transactions FROM
        NB Time component is optional - set to 00:00:00 for just Date.
        If the Date Time contains a timezone, the LFI must ignore the timezone component.
      schema:
        type: string
        format: date-time
    ToBookingDateTimeParam:
      in: query
      name: toBookingDateTime
      description: |-
        The UTC ISO 8601 Date Time to filter transactions TO
        NB Time component is optional - set to 00:00:00 for just Date.
        If the Date Time contains a timezone, the LFI must ignore the timezone component.
      schema:
        type: string
        format: date-time
    baseConsentId:
      in: query
      name: baseConsentId
      required: true
      description: |
        A specific baseConsentId. For example:
        ```
        baseConsentId=abc-19877d98-ab0e-4758-92a7-vvffr1234abv 
        ```
      schema:
        type: string
      allowEmptyValue: false
      example: abc-19877d98-ab0e-4758-92a7-vvffr1234abv
    LastSubmitted:
      name: LastSubmitted
      in: query
      required: false
      description: |-
        If `true`, only the last successfully recorded Attestation Event submitted by the TPP is returned.

        This is the Attestation Event that is reported on for the consent.
      schema:
        type: boolean
        default: false
      explode: false
  securitySchemes:
    TPPOAuth2Security:
      type: oauth2
      description: >-
        TPP confidential client authorization with the LFI to stage a consent. **Please refer to [OpenID FAPI Security
        Profile 1.0 -Part 2
        Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0.html#authorization-server) - 5.2.2 point 14 -
        shall authenticate the confidential client using one of the following methods private_key_jwt and [OpenID
        Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) 9. Client
        Authentication private_key_jwt**
      flows:
        clientCredentials:
          tokenUrl: https://authserver.example/token
          scopes:
            openid: Activates OpenID Connect Support
            accounts: Ability to read Accounts Information
    UserOAuth2Security:
      type: oauth2
      description: >-
        [OAuth2 PAR flow](https://datatracker.ietf.org/doc/html/rfc9126), it is required when the User needs to perform
        SCA with the LFI when a TPP wants to access an LFI resource owned by the User. **Please refer to [OpenID FAPI
        Security Profile 1.0 -Part 2
        Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0.html#authorization-server) - 5.2.2 point 14 -
        shall authenticate the confidential client using one of the following methods private_key_jwt and [OpenID
        Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) 9. Client
        Authentication private_key_jwt**
      flows:
        authorizationCode:
          authorizationUrl: https://authserver.example/authorization
          tokenUrl: https://authserver.example/token
          scopes:
            openid: Activates OpenID Connect Support
            accounts: Ability to read Accounts Information. This is a parameterized scope with the ConsentId
    LFIWebhookSecurity:
      type: http
      description: >-
        The LFI generates a Self Signed JWT Authorization Token for Client Authentication with the TPP. **Please refer
        to Self-Signed JWT Authorization Token Specification in the UAE Standard API User Guide**
      scheme: bearer
      bearerFormat: JWT
