openapi: 3.0.0
info:
  title: UAE Webhook Template
  version: v2.1-errata2
  description: >-
    OpenAPI description provided **as a template** for guidance in implementing Webhooks under the UAE Open Finance
    Programme.
tags:
  - name: Webhook Template
paths:
  /:
    post:
      operationId: UnsignedEventNotificationPayload_SignedEventNotificationPayload
      parameters: []
      description: >-
        This endpoint provides a template for the implementation of Webhooks at a TPP.


        A 202 or 204 HTTP return code with an empty payload is expected in acknowledgement of receipt.


        TPPs should observe the standardized error payloads as defined by the Open Finance Framework and provided in
        this API

        description.
      summary: Event Notification Template
      responses:
        '202':
          description: Accepted
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation ID.
              schema:
                type: string
        '204':
          description: No content
          headers:
            x-fapi-interaction-id:
              required: false
              description: An RFC4122 UID used as a correlation ID.
              schema:
                type: string
        '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:
        - Webhook Template
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AEWebhookEventSigned'
          application/jwe:
            schema:
              type: string
        description: >-
          Please note the `application/json` Content Type is provided for processing the Event Notification payload and
          does not accurately reflect the format of a serialized, signed, and encrypted JSON Web Token (JWT) that will
          be received at the registered Webhook. The event will be a string and be received with the Content Type value
          `application/jwe`.


          The Schema Object is provided for TPPs to understand the correct message payload definition that must be
          parsed from the signed and encrypted enclosed JWT received in the Event Notification.


          Please refer to the Open Finance Framework documentation for guidelines on decrypting and verifying JWTs
          received at Webhooks.
components:
  schemas:
    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).
    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.
    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
    AEBankServiceInitiation.AEChargeBearerType1Code:
      type: string
      enum:
        - BorneByCreditor
        - BorneByDebtor
        - Shared
      description: Specifies which party/parties will bear the charges associated with the processing of the payment transaction.
    AEBankServiceInitiation.AECharges:
      type: object
      required:
        - ChargeBearer
        - Type
        - Amount
      properties:
        ChargeBearer:
          $ref: '#/components/schemas/AEBankServiceInitiation.AEChargeBearerType1Code'
        Type:
          $ref: '#/components/schemas/AEBankServiceInitiation.AEExternalPaymentChargeTypeCode'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEActiveCurrencyAmount'
      description: Charges related to the consented payment instruction.
    AEBankServiceInitiation.AECreditorReference:
      type: string
      minLength: 1
      maxLength: 35
      description: >-
        A Creditor Reference is a note for a given Creditor or Creditor LFI that supports reconciliation of a given
        payment instruction.
    AEBankServiceInitiation.AECurrencyRequest:
      type: object
      required:
        - ExtendedPurpose
        - CurrencyOfTransfer
      properties:
        InstructionPriority:
          allOf:
            - $ref: '#/components/schemas/AEBankServiceInitiation.AEInstructionPriority'
          description: >-
            Indicator of the urgency or order of importance that the instructing party would like the instructed party
            to apply to the processing of the instruction.
        ExtendedPurpose:
          type: string
          minLength: 1
          maxLength: 140
          description: Specifies the purpose of an international payment.
        ChargeBearer:
          $ref: '#/components/schemas/AEBankServiceInitiation.AEChargeBearerType1Code'
        CurrencyOfTransfer:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Specifies the currency of the to be transferred amount, which is different from the currency of the debtor's
            account.
        DestinationCountryCode:
          type: string
          pattern: '[A-Z]{2,2}'
          description: >-
            Country in which Credit Account is domiciled. Code to identify a country, a dependency, or another area of
            particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166,
            Alpha-2 code).
        ExchangeRateInformation:
          $ref: '#/components/schemas/AEBankServiceInitiation.AEExchangeRateInformation'
        FxQuoteId:
          type: string
          minLength: 1
          maxLength: 128
          description: >-
            Required where the consent or payment initiation request relates to a previously quoted FX trade. The TPP
            must provide the `QuoteId` value where the payment type is a single instant payment, or omit and provide in
            the payment initiation request where a long-lived consent exists.
      description: >-
        The details of the non-local currency or FX request that has been agreed between the User and the TPP. The
        requested ChargeBearer and ExchangeRateInformation included in this object may be superseded by updated
        information supplied by the LFI.
    AEBankServiceInitiation.AEDebtorReference:
      type: string
      minLength: 1
      maxLength: 35
      description: >-
        A Debtor Reference is a note is for the reference of a given User that may be available as additional
        information in relation to a given payment instruction.
    AEBankServiceInitiation.AEExchangeRateInformation:
      type: object
      required:
        - UnitCurrency
        - RateType
      properties:
        UnitCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR,
            the unit currency is GBP.
        ExchangeRate:
          type: number
          description: >-
            The factor used for conversion of an amount from one currency to another. This reflects the price at which
            one currency was bought with another currency.
        RateType:
          $ref: '#/components/schemas/AEBankServiceInitiation.AERateType'
        ContractIdentification:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Unique and unambiguous reference to the foreign exchange contract agreed between the initiating
            party/creditor and the debtor agent.
      description: Provides details on the currency exchange rate and contract.
    AEBankServiceInitiation.AEExternalPaymentChargeTypeCode:
      type: string
      enum:
        - VAT
        - Fees
      description: Charge type, in a coded form.
    AEBankServiceInitiation.AEInstructionPriority:
      type: string
      enum:
        - Normal
        - Urgent
      description: >-
        Indicator of the urgency or order of importance that the instructing party would like the instructed party to
        apply to the processing of the instruction.
    AEBankServiceInitiation.AEPaymentPurposeCode:
      type: string
      minLength: 1
      maxLength: 3
      pattern: ^[A-Z]{3}$
      description: >-
        A category 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.
    AEBankServiceInitiation.AERateType:
      type: string
      enum:
        - Actual
        - Agreed
        - Indicative
      description: Specifies the type used to complete the currency exchange.
    AEBankServiceInitiation.AEReference:
      type: string
      minLength: 1
      maxLength: 35
      description: A reason or reference in relation to a payment.
    AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricAmount:
      type: string
      pattern: ^\d{1,16}\.\d{2}$
      description: >-
        A number of monetary units specified in an active currency where the unit of currency is explicit and compliant
        with ISO 4217.
      example: '100.00'
    AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricCurrencyCode:
      type: string
      pattern: ^[A-Z]{3,3}$
      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'.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationConsentPermissionCodes:
      type: string
      enum:
        - ReadAccountsBasic
        - ReadAccountsDetail
        - ReadBalances
        - ReadRefundAccount
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFilePaymentConsent:
      type: object
      required:
        - FileType
        - FileHash
        - NumberOfTransactions
        - ControlSum
      properties:
        FileType:
          type: string
          minLength: 1
          maxLength: 40
          description: Specifies the payment file type
        FileHash:
          type: string
          minLength: 1
          maxLength: 44
          description: A base64 encoding of a SHA256 hash of the file to be uploaded.
        FileReference:
          $ref: '#/components/schemas/AEBankServiceInitiation.AEReference'
        NumberOfTransactions:
          type: integer
          description: Number of individual transactions contained in the payment information group.
        ControlSum:
          type: string
          pattern: ^\d{1,16}\.\d{2}$
          description: Total of all individual amounts included in the group, irrespective of currencies.
        RequestedExecutionDate:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AERequestedExecutionDate'
      description: Bulk/Batch Control Parameters.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule:
      type: object
      required:
        - Type
        - Schedule
      properties:
        Type:
          type: string
          enum:
            - FixedDefinedSchedule
          description: The Periodic Schedule Type
        Schedule:
          type: array
          items:
            $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedSchedule'
          minItems: 1
          maxItems: 53
      description: Payment Schedule denoting a list of pre-defined future dated payments all with fixed amounts and dates.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedOnDemand:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Amount
        - Controls
      properties:
        Type:
          type: string
          enum:
            - FixedOnDemand
        PeriodType:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodStartDate'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
        Controls:
          type: object
          properties:
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
          minProperties: 1
          description: Controls that apply to the payment schedule.
      description: >-
        Payment Controls that apply to all payment instructions in a given period under this payment consent. The
        payments for this consent may be executed on any date, as long as they are within the Controls for a PeriodType
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Amount
      properties:
        Type:
          type: string
          enum:
            - FixedPeriodicSchedule
        PeriodType:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodStartDate'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
      description: >-
        Payment Controls that apply to all payment instructions in a given period under this payment consent. The
        payments for this consent must be executed only on the PeriodStartDate, and dates recurring based on the
        PeriodType.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedSchedule:
      type: object
      required:
        - PaymentExecutionDate
        - Amount
      properties:
        PaymentExecutionDate:
          type: string
          format: date
          description: |-
            Used to specify the expected payment execution date/time.
            All dates in the JSON payloads are represented in ISO 8601 date format, for example is: 2023-04-05
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationLongLivedPaymentConsent:
      type: object
      required:
        - PeriodicSchedule
      properties:
        MaximumCumulativeValueOfPayments:
          allOf:
            - $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
          description: >-
            The maximum cumulative value of all successful payment rails executions under the Consent.

            Each successful payment rails execution amount (related to the Consent) is added to the total cumulative
            value of the Consent which cannot exceed the maximum value agreed with the User at the point of consent.
        MaximumCumulativeNumberOfPayments:
          type: integer
          description: >-
            The maximum cumulative number of all successful payment rails executions under the Consent.

            Each successful payment rails execution (related to the Consent) is added to the total cumulative number of
            payments for the Consent which cannot exceed the maximum value agreed with the User at the point of
            consent.    
        PeriodicSchedule:
          $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationLongLivedPaymentConsentPeriodicSchedule
      description: A Consent definition for defining Multi Payments
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationLongLivedPaymentConsentPeriodicSchedule:
      oneOf:
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableOnDemand
        - $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedOnDemand'
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule
      discriminator:
        propertyName: Type
        mapping:
          VariableOnDemand: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableOnDemand
          FixedOnDemand: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedOnDemand'
          VariablePeriodicSchedule: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule
          FixedPeriodicSchedule: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule
          VariableDefinedSchedule: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule
          FixedDefinedSchedule: >-
            #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule
      description: The definition for a schedule
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationSingleInstantPayment:
      type: object
      required:
        - Type
        - Amount
      properties:
        Type:
          type: string
          enum:
            - SingleInstantPayment
          description: The Payment Type
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
      description: >-
        A single immediate payment consent that MUST be used for a single payment which will be initiated immediately
        after User authorization at the LFI.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule:
      type: object
      required:
        - Type
        - Schedule
      properties:
        Type:
          type: string
          enum:
            - VariableDefinedSchedule
          description: The Periodic Schedule Type
        Schedule:
          type: array
          items:
            $ref: >-
              #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableSchedule
          minItems: 1
          maxItems: 53
      description: Payment Schedule denoting a list of pre-defined future dated payments all with variable amounts and dates.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableOnDemand:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Controls
      properties:
        Type:
          type: string
          enum:
            - VariableOnDemand
        PeriodType:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodStartDate'
        Controls:
          type: object
          properties:
            MaximumIndividualAmount:
              $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEMaximumIndividualAmount'
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
          minProperties: 1
      description: >-
        Payment Controls that apply to all payment instructions in a given period under this payment consent. The
        payments for this consent may be executed on any date, as long as they are within the Controls for a PeriodType.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - MaximumIndividualAmount
      properties:
        Type:
          type: string
          enum:
            - VariablePeriodicSchedule
        PeriodType:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEPeriodStartDate'
        MaximumIndividualAmount:
          allOf:
            - $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEMaximumIndividualAmount'
          description: This is the Maximum amount a variable payment can take per period.
      description: >-
        Payment Controls that apply to all payment instructions in a given period under this payment consent. The
        payments for this consent must be executed only on the PeriodStartDate, and dates recurring based on the
        PeriodType.
    AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationVariableSchedule:
      type: object
      required:
        - PaymentExecutionDate
        - MaximumIndividualAmount
      properties:
        PaymentExecutionDate:
          type: string
          format: date
          description: >-
            Used to specify the expected payment execution date/time. All dates in the JSON payloads are represented in
            ISO 8601 date format. An example is: 2023-04-05
        MaximumIndividualAmount:
          allOf:
            - $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEMaximumIndividualAmount'
          description: This is the Maximum amount a variable payment can take per period.
    AEBankServiceInitiationRichAuthorizationRequests.AEMaximumIndividualAmount:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricAmount'
        Currency:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricCurrencyCode'
      description: This is the Maximum amount a variable payment can take per period.
    AEBankServiceInitiationRichAuthorizationRequests.AEPeriodStartDate:
      type: string
      format: date
      description: Specifies the start date of when a payment schedule begins.
    AEBankServiceInitiationRichAuthorizationRequests.AEPeriodType:
      type: string
      enum:
        - Day
        - Week
        - Month
        - Year
      description: >-
        |Period Type|Description|

        |-----------|-----------|

        |Day|A continuous period of time, consisting of 24 consecutive hours, starting from midnight (00:00:00) and
        finishing at 23:59:59 of the same day. |

        |Week|A continuous period of time, consisting of seven consecutive days, starting from midnight (00:00:00) and
        finishing at 23:59:59 of the 7th day. |

        |Month|A continuous period of time starting from midnight (00:00:00) of the first day of a month and finishing
        at 23:59:59 of the last day of that month.|

        |Year|A continuous period of time, consisting of 12 months.|
    AEBankServiceInitiationRichAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricAmount'
        Currency:
          $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEActiveOrHistoricCurrencyCode'
      description: The maximum cumulative payment value of all payment initiations per Period Type.
    AEBankServiceInitiationRichAuthorizationRequests.AERequestedExecutionDate:
      type: string
      format: date
      description: >-
        The date when the TPP expects the LFI to execute the payment.

        The date must be in the future and cannot be on the same day or a day in the past.

        The maximum date in the future that can be specified is 1 year from the day of the consent of the User to the
        TPP.

        All dates in the JSON payloads are represented in ISO 8601 date format.
    AEBankServiceInitiationRichAuthorizationRequests.AuthorizationExpirationDateTime:
      type: string
      format: date-time
      description: The date and time by which a Consent (in AwaitingAuthorization status) must be Authorized by the User.
    AEBankServiceInitiationRichAuthorizationRequests.IsSingleAuthorization:
      type: boolean
      description: Specifies to the LFI that the consent authorization must be completed by a single authorizer at the LFI.
    AEBankServiceInitiationRichAuthorizationRequestsV21.AEBankServiceInitiationControlParametersProperties:
      type: object
      properties:
        IsDelegatedAuthentication:
          type: boolean
          description: >-
            Indicates whether the all payment controls will be defined and managed by the TPP under the Payment with
            Delegated Authentication capability
        ConsentSchedule:
          type: object
          properties:
            SinglePayment:
              $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationSingleInstantPayment
            MultiPayment:
              $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationLongLivedPaymentConsent
            FilePayment:
              $ref: >-
                #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationFilePaymentConsent
          description: |
            The various payment types that can be initiated:

            * A Single Payment

            * A Multi-Payment
            
            * A Combined Payment (one SinglePayment and one MultiPayment)
    AECharges:
      type: array
      items:
        type: object
        properties:
          ChargeBearer:
            $ref: '#/components/schemas/UAEPaymentAPI.AEChargeBearerType1Code'
          Type:
            $ref: '#/components/schemas/UAEPaymentAPI.AEExternalPaymentChargeTypeCode'
          Amount:
            $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
        required:
          - ChargeBearer
          - Type
          - Amount
    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.
    AEConsentStatus.AEBankServiceInitiationOpenFinanceBilling:
      type: object
      properties:
        IsLargeCorporate:
          type: boolean
          description: Customer has more than 100 million AED turnover.
      description: Billing parameters specified by the LFI.
    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.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
    AEConsentStatus.AEExchangeRateInformation:
      type: object
      required:
        - UnitCurrency
        - RateType
      properties:
        UnitCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR,
            the unit currency is GBP.
        ExchangeRate:
          type: number
          description: >-
            The factor used for conversion of an amount from one currency to another. This reflects the price at which
            one currency was bought with another currency.
        RateType:
          $ref: '#/components/schemas/AEBankServiceInitiation.AERateType'
        ContractIdentification:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Unique and unambiguous reference to the foreign exchange contract agreed between the initiating
            party/creditor and the debtor agent.
        ExpirationDateTime:
          type: string
          format: date-time
          description: >-
            Specified date and time the exchange rate agreement 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: 2017-04-05T10:43:07+00:00
      description: >-
        Further detailed information on the exchange rate that has been used in the payment transaction - returned by
        the LFI.
    AEConsentStatus.AEPaymentConsumption:
      type: object
      required:
        - CumulativeNumberOfPayments
        - CumulativeValueOfPayments
      properties:
        CumulativeNumberOfPayments:
          type: integer
          description: >-
            The cumulative number of payment instructions initiated under the consent schedule, excluding instructions
            in a Rejected state.
        CumulativeValueOfPayments:
          allOf:
            - $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
          description: >-
            The cumulative value of payment instructions initiated under the consent schedule, excluding instructions in
            a Rejected state. A number of monetary units specified in an active currency where the unit of currency is
            explicit and compliant with ISO 4217.
        CumulativeNumberOfPaymentsInCurrentPeriod:
          type: integer
          description: >-
            The cumulative number of payment instructions in the current period initiated under the consent schedule,
            excluding instructions in a Rejected state.
        CumulativeValueOfPaymentsInCurrentPeriod:
          allOf:
            - $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
          description: >-
            The cumulative value of payment instructions in the current period initiated under the consent schedule,
            excluding instructions in a Rejected state. A number of monetary units specified in an active currency where
            the unit of currency is explicit and compliant with ISO 4217.
      description: Data to track the consumption of Payments in relation to an authorized Consent Schedule
    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|
    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
    AEConsentStatusCode:
      type: string
      enum:
        - Authorized
        - AwaitingAuthorization
        - Rejected
        - Revoked
        - Expired
        - Suspended
    AECreationDateTime:
      type: object
      required:
        - CreationDateTime
      properties:
        CreationDateTime:
          type: string
          format: date-time
          description: >-
            Date and time at which the resource 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, as shown in this example:
            2017-04-05T10:43:07+00:00
    AECustomErrorCode:
      type: string
      pattern: ^[A-Za-z]+\.[A-Za-z0-9]+$
    AEError400:
      anyOf:
        - $ref: '#/components/schemas/AEError400Codes'
        - $ref: '#/components/schemas/AECustomErrorCode'
    AEError400Codes:
      type: string
      enum:
        - Consent.Invalid
        - Consent.BusinessRuleViolation
        - Consent.FailsControlParameters
        - Consent.InvalidUserIdentifier
        - JWS.InvalidSignature
        - JWS.Malformed
        - JWS.InvalidClaim
        - JWS.InvalidHeader
        - JWS.InvalidPayload
        - JWE.DecryptionError
        - JWE.InvalidHeader
        - GenericRecoverableError
        - GenericError
        - Event.UnexpectedEvent
        - Body.InvalidFormat
        - Resource.InvalidFormat
    AEError400ResponseBody:
      type: object
      required:
        - Errors
      properties:
        Errors:
          type: array
          items:
            type: object
            properties:
              Code:
                $ref: '#/components/schemas/AEError400'
              Message:
                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'

                  UAEOF doesn't standardise this field
              Path:
                type: string
                minLength: 1
                maxLength: 500
                description: >-
                  Recommended but optional reference to the JSON Path of the field with error, e.g.,
                  $.Data.Initiation.InstructedAmount.Currency
              Url:
                type: string
                description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
            required:
              - Code
              - Message
          minItems: 1
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
    AEError400ResponseBodySigned:
      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/AEError400ResponseBody'
    AEError403:
      anyOf:
        - $ref: '#/components/schemas/AEError403Codes'
        - $ref: '#/components/schemas/AECustomErrorCode'
    AEError403Codes:
      type: string
      enum:
        - AccessToken.InvalidScope
        - Consent.TransientAccountAccessFailure
        - Consent.AccountTemporarilyBlocked
        - Consent.PermanentAccountAccessFailure
        - GenericRecoverableError
        - GenericError
    AEError403ResponseBody:
      type: object
      required:
        - Errors
      properties:
        Errors:
          type: array
          items:
            type: object
            properties:
              Code:
                $ref: '#/components/schemas/AEError403'
              Message:
                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'

                  UAEOF doesn't standardise this field
              Path:
                type: string
                minLength: 1
                maxLength: 500
                description: >-
                  Recommended but optional reference to the JSON Path of the field with error, e.g.,
                  $.Data.Initiation.InstructedAmount.Currency
              Url:
                type: string
                description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
            required:
              - Code
              - Message
          minItems: 1
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
    AEError403ResponseBodySigned:
      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/AEError403ResponseBody'
    AEError500:
      anyOf:
        - $ref: '#/components/schemas/AEErrorGenericCodes'
        - $ref: '#/components/schemas/AECustomErrorCode'
    AEError500ResponseBody:
      type: object
      required:
        - Errors
      properties:
        Errors:
          type: array
          items:
            type: object
            properties:
              Code:
                $ref: '#/components/schemas/AEError500'
              Message:
                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'

                  UAEOF doesn't standardise this field
              Path:
                type: string
                minLength: 1
                maxLength: 500
                description: >-
                  Recommended but optional reference to the JSON Path of the field with error, e.g.,
                  $.Data.Initiation.InstructedAmount.Currency
              Url:
                type: string
                description: URL to help remediate the problem, or provide more information, or to API Reference, or help etc
            required:
              - Code
              - Message
          minItems: 1
      description: An array of detail error codes, and messages, and URLs to documentation to help remediation.
    AEError500ResponseBodySigned:
      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/AEError500ResponseBody'
    AEErrorGenericCodes:
      type: string
      enum:
        - GenericRecoverableError
        - GenericError
    AEInsurance.AEActiveCurrencyAmount:
      type: object
      required:
        - Currency
        - Amount
      properties:
        Currency:
          $ref: '#/components/schemas/AEInsurance.AEActiveOrHistoricCurrencyCode'
        Amount:
          $ref: '#/components/schemas/AEInsurance.AEActiveOrHistoricAmount'
      description: The Currency and Amount relating to the Payment, Refund or Request to Pay
    AEInsurance.AEActiveOrHistoricAmount:
      type: string
      pattern: ^\d{1,16}\.\d{2}$
      description: >-
        A number of monetary units specified in an active currency where the unit of currency is explicit and compliant
        with ISO 4217.
      example: '100.00'
    AEInsurance.AEActiveOrHistoricCurrencyCode:
      type: string
      pattern: ^[A-Z]{3,3}$
      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'.
      example: AED
    AEInsurance.AEConsentPermissionCodes:
      type: string
      enum:
        - ReadInsurancePolicies
        - ReadCustomerBasic
        - ReadCustomerDetail
        - ReadCustomerPaymentDetails
        - ReadInsuranceProduct
        - ReadCustomerClaims
        - ReadInsurancePremium
    AEInsurance.AEConsentPermissions:
      type: object
      required:
        - InsuranceType
        - Permissions
      properties:
        InsuranceType:
          type: string
          enum:
            - Employment
            - Health
            - Home
            - Life
            - Motor
            - Renters
            - Travel
          description: The insurance sector to which the permissions relate.
        Permissions:
          type: array
          items:
            $ref: '#/components/schemas/AEInsurance.AEConsentPermissionCodes'
          minItems: 1
          description: The data clusters requested by the TPP.
    AEInsurance.AEDocumentProperties:
      type: object
      required:
        - Type
        - FileName
        - ContentType
        - Content
        - HashType
        - Hash
      properties:
        Type:
          type: string
          description: The type of document that has been provided.  For example, Policy Booklet, Terms & Conditions
        FileName:
          type: string
          description: >-
            Original file name for operator reference (no paths). Should include  a suitable extension (e.g.,
            policy.pdf, terms.pdf).
        ContentType:
          type: string
          enum:
            - application/pdf
            - image/jpeg
            - image/png
          description: >-
            Content (MIME) type of the document, using IANA-registered media types, and based on types supported in the
            Open Finance Framework.
        Content:
          type: string
          format: base64
          description: >-
            Base64-encoded representation of the document content.  The encoded string must be generated from the raw
            file bytes and decoded by the LFI to restore the original file.
        HashType:
          type: string
          enum:
            - SHA256
          description: Approach used to create checksum or hash of the file. SHA256 is supported.
        Hash:
          type: string
          description: >-
            Checksum of the original file bytes created using the method indicated by `HashType`. Required to enable
            integrity verification by comparing with the hash or checksum calculated on the decoded file.
        AdditionalInformation:
          type: string
          maxLength: 1000
          description: Optional free text notes providing context on the document.
    AEInsurance.AEInsuranceEmirate:
      type: string
      enum:
        - AbuDhabi
        - Ajman
        - Dubai
        - Fujairah
        - RasAlKhaimah
        - Sharjah
        - UmmAlQuwain
    AEInsurance.AEInsuranceEvent:
      anyOf:
        - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteEventTerminalStatus'
        - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteEventPendingCompletionStatus'
        - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteEventCompletedStatus'
    AEInsurance.AEInsuranceEventCompletionPendingStatusCodes:
      type: string
      enum:
        - ApplicationPending
        - ApplicationApproved
        - PaymentRequired
        - PolicyIssued
    AEInsurance.AEInsuranceQuoteEventBrokerInstructions:
      type: object
      properties:
        ActionRequired:
          type: string
          minLength: 1
          maxLength: 1000
          description: Free-text description that provides confirmation of the action required by the Broker.
        Reason:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteStatusUpdateReason'
          description: Free-text explanation of why the action must be performed by the Broker.
        Url:
          type: string
          format: uri
          description: >-
            URL provided by the LFI for the Broker to collect a one-off premium payment or set up recurring premium
            payments.
    AEInsurance.AEInsuranceQuoteEventCompletedStatus:
      type: object
      required:
        - QuoteStatus
        - PolicyTerm
        - Premium
        - CustomerPaidInFull
        - PolicyCountrySubDivision
      properties:
        QuoteStatus:
          type: string
          enum:
            - Completed
          description: Completed status.
        PolicyStartDate:
          type: string
          format: date
          description: Policy start date
        PolicyEndDate:
          type: string
          format: date
          description: Policy end date
        PolicyTerm:
          type: string
          pattern: ^P(\d+Y)?(\d+M)?$
          format: duration
          description: The insurance policy term in years and months, using ISO 8601 compatible duration format
          example: P2Y3M
        Premium:
          type: object
          properties:
            OneYearPremiumExcludingVAT:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEActiveCurrencyAmount'
              description: >-
                The details of the final insurance premium, reflecting the total value of premiums excluding VAT payable
                either annually or over the life of the policy when the coverage period is less than one year.
            VATAmount:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEActiveCurrencyAmount'
              description: The Premium VAT amount.
            TotalOneYearPremium:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEActiveCurrencyAmount'
              description: >-
                The details of the final insurance premium, reflecting the total value of premiums including VAT payable
                either annually or over the life of the policy when the coverage period is less than one year.
            TotalPolicyPremium:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEActiveCurrencyAmount'
              description: The total value of premiums, including VAT, payable over the life of the policy.
          required:
            - OneYearPremiumExcludingVAT
            - VATAmount
            - TotalOneYearPremium
          description: Details for the policy premium.
        CustomerSalary:
          type: string
          enum:
            - Under4K
            - Over4K
          description: >-
            Confirmation whether the customer monthly salary is less than or greater than AED 4,000 each month. Required
            for Health Insurance.
        Commission:
          type: object
          properties:
            CommissionAmount:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEActiveCurrencyAmount'
              description: >-
                The total monetary value of the commission paid to the TPP if the User proceeds with the quote
                application and purchases the policy based on the quote information provided.
            PaymentMethod:
              type: string
              enum:
                - DirectToTPP
                - ThroughAPIHub
              description: >-
                The method to be used to pay the commission to the TPP if the User elects to proceed with the
                application and successfully purchases the policy.
          required:
            - PaymentMethod
          description: Commission amount, where the LFI is responsible for calculating the value.
        Documents:
          type: array
          items:
            $ref: '#/components/schemas/AEInsurance.AEDocumentProperties'
          minItems: 1
          description: Policy documents to be issued to the Customer via the TPP.
        CustomerPaidInFull:
          type: boolean
          description: Indicates the Customer has paid for the policy in full.
        PolicyCountrySubDivision:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceEmirate'
          description: The Emirate state where the policy was issued.
      description: Quote has been Completed.
      title: Completed Event
    AEInsurance.AEInsuranceQuoteEventPendingCompletionStatus:
      type: object
      required:
        - QuoteStatus
      properties:
        QuoteStatus:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceEventCompletionPendingStatusCodes'
          description: Pending completion quote status.
        BrokerInstructions:
          type: array
          items:
            $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteEventBrokerInstructions'
          minItems: 1
          description: Instructions and actions required by the Broker to allow the application to proceed.
        Documents:
          type: array
          items:
            $ref: '#/components/schemas/AEInsurance.AEDocumentProperties'
          minItems: 1
          description: Policy documents to be issued to the Customer via the TPP.
      description: Quote status updates indicating a pending state, with optional instructions for TPPs.
      title: Pending Event
    AEInsurance.AEInsuranceQuoteEventTerminalStatus:
      type: object
      required:
        - QuoteStatus
      properties:
        QuoteStatus:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteNegativeTerminalStatusCodes'
          description: Terminal quote status.
        Reason:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceQuoteStatusUpdateReason'
          description: Optional explanation for the unsuccessful completion of the quote.
      description: Quote status updates indicating a terminal state.
      title: Terminal Event
    AEInsurance.AEInsuranceQuoteNegativeTerminalStatusCodes:
      type: string
      enum:
        - Expired
        - Rejected
        - CustomerCancelled
        - LFICancelled
    AEInsurance.AEInsuranceQuoteStatusUpdateReason:
      type: string
      minLength: 1
      maxLength: 1000
    AEInsurance.AEInsuranceResourceIdentifierType:
      type: string
      minLength: 1
      maxLength: 128
      format: uuid
      description: Unique identifier for a given insurance policy
    AEInsurance.AEReadInsuranceConsent1Properties:
      type: object
      required:
        - ConsentId
        - Permissions
        - ExpirationDateTime
        - OpenFinanceBilling
        - CreationDateTime
        - Status
        - StatusUpdateDateTime
      properties:
        ConsentId:
          $ref: '#/components/schemas/uuid'
        BaseConsentId:
          $ref: '#/components/schemas/uuid'
        Permissions:
          type: array
          items:
            $ref: '#/components/schemas/AEInsurance.AEConsentPermissions'
          minItems: 1
          description: >-
            Specifies the permitted insurance policy data types.

            This is a list of the data groups being consented by the User, and requested for authorization with the
            LFI.    
        ExpirationDateTime:
          type: string
          format: date-time
          description: >-
            Specified date and time the permissions will expire.

            If this is not populated, the permissions will be open ended.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
        OnBehalfOf:
          $ref: '#/components/schemas/AEOnBehalfOf'
        OpenFinanceBilling:
          type: object
          properties:
            IsLargeCorporate:
              type: boolean
              description: Customer has more than 100 million AED turnover
            Purpose:
              type: string
              enum:
                - AccountAggregation
                - RiskAssessment
                - PremiumHistory
                - ClaimHistory
                - Onboarding
                - Verification
                - QuoteComparison
                - FinancialAdvice
                - Other
              description: Purpose of data sharing request.
          required:
            - Purpose
        CreationDateTime:
          type: string
          format: date-time
          description: >-
            Date and time at which the resource 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, as shown in this example:
            2017-04-05T10:43:07+00:00
        Status:
          allOf:
            - $ref: '#/components/schemas/AEConsentStatusCode'
          description: Specifies the status of consent resource in code form.
        StatusUpdateDateTime:
          type: string
          format: date-time
          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, as shown in this example:
            2017-04-05T10:43:07+00:00
        RevokedBy:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AERevokedByCode'
          description: Denotes the Identifier of the revocation.
      title: Insurance Data Sharing Consent
    AEInsurance.AERevokedByCode:
      type: string
      enum:
        - LFI
        - TPP
        - LFI.InitiatedByUser
        - TPP.InitiatedByUser
    AEOnBehalfOf:
      type: object
      properties:
        TradingName:
          type: string
          description: Trading Name
        LegalName:
          type: string
          description: Legal Name
        IdentifierType:
          allOf:
            - $ref: '#/components/schemas/AEOnBehalfOfIdentifierType'
          description: Identifier Type
        Identifier:
          type: string
          description: Identifier
    AEOnBehalfOfIdentifierType:
      type: string
      enum:
        - Other
    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.
    AEPushedAuthorizationRequests.AESponsoredTPPInformation:
      type: object
      required:
        - Name
        - Identification
      properties:
        Name:
          type: string
          minLength: 1
          maxLength: 50
          description: The Sponsored TPP Name
        Identification:
          type: string
          minLength: 1
          maxLength: 50
          description: The Sponsored TPP Identification
      description: |-
        The Sponsored TPP is:

        - A TPP that itself has no direct Open Banking API integrations.

        - A TPP that is using the integration of another TPP that does have direct Open Finance API integrations.
    AEStandardModels.AEActiveCurrencyAmount:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEActiveOrHistoricAmount'
        Currency:
          $ref: '#/components/schemas/AEStandardModels.AEActiveOrHistoricCurrencyCode'
      description: An Amount qualified by an active Currency.
    AEStandardModels.AEActiveOrHistoricAmount:
      type: string
      pattern: ^\d{1,16}\.\d{2}$
      description: >-
        A number of monetary units specified in an active currency where the unit of currency is explicit and compliant
        with ISO 4217.
      example: '100.00'
    AEStandardModels.AEActiveOrHistoricCurrencyCode:
      type: string
      pattern: ^[A-Z]{3,3}$
      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'.
    AEStandardModels.AEAmountAndCurrency:
      type: object
      required:
        - Currency
        - Amount
      properties:
        Currency:
          $ref: '#/components/schemas/AEStandardModels.AEActiveOrHistoricCurrencyCode'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEActiveOrHistoricAmount'
      description: An Amount qualified by Currency
    AEStatusUpdateDateTime:
      type: object
      required:
        - StatusUpdateDateTime
      properties:
        StatusUpdateDateTime:
          type: string
          format: date-time
          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, as shown in this example:
            2017-04-05T10:43:07+00:00
    AEWebhookAccountOpeningEventProperties:
      type: object
      required:
        - Data
        - Meta
      properties:
        Data:
          allOf:
            - $ref: '#/components/schemas/AccountOpeningStatusUpdateEvent'
          description: >-
            Account Opening Event Data. This Data Object will contain the same API resource and Schema that has
            triggered the Event.
        Meta:
          type: object
          properties:
            EventDateTime:
              type: string
              format: date-time
            EventResource:
              type: string
            EventType:
              type: string
              enum:
                - Resource.Created
                - Resource.Updated
                - Resource.Deleted
            AccountId:
              allOf:
                - $ref: '#/components/schemas/AccountOpeningServiceInitiation.AEAccountIdType'
              description: Account identifier related to the event.
          required:
            - EventDateTime
            - EventResource
            - EventType
            - AccountId
          description: Event Metadata.
      title: Account Opening Event
    AEWebhookConsentedEventProperties:
      type: object
      required:
        - Meta
      properties:
        Data:
          anyOf:
            - 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'
                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
              title: Bank Data Sharing Consent
            - type: object
              properties:
                ConsentId:
                  $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentId'
                BaseConsentId:
                  $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEBaseConsentId'
                IsSingleAuthorization:
                  $ref: '#/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.IsSingleAuthorization'
                AuthorizationExpirationDateTime:
                  $ref: >-
                    #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AuthorizationExpirationDateTime
                Permissions:
                  type: array
                  items:
                    $ref: >-
                      #/components/schemas/AEBankServiceInitiationRichAuthorizationRequests.AEBankServiceInitiationConsentPermissionCodes
                  description: Permission codes granted by the User to the TPP, allowing the TPP to check execute a balance check.
                ExpirationDateTime:
                  $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentExpirationDateTime'
                Status:
                  $ref: '#/components/schemas/AEConsentStatus.AEConsentStatusCodes'
                RevokedBy:
                  $ref: '#/components/schemas/AEConsentStatus.AERevokedByCodes'
                CreationDateTime:
                  $ref: '#/components/schemas/AECreationDateTime'
                StatusUpdateDateTime:
                  $ref: '#/components/schemas/AEStatusUpdateDateTime'
                Charges:
                  type: array
                  items:
                    $ref: '#/components/schemas/AEBankServiceInitiation.AECharges'
                  minItems: 1
                ExchangeRate:
                  $ref: '#/components/schemas/AEConsentStatus.AEExchangeRateInformation'
                CurrencyRequest:
                  $ref: '#/components/schemas/AEBankServiceInitiation.AECurrencyRequest'
                ControlParameters:
                  $ref: >-
                    #/components/schemas/AEBankServiceInitiationRichAuthorizationRequestsV21.AEBankServiceInitiationControlParametersProperties
                DebtorReference:
                  $ref: '#/components/schemas/AEBankServiceInitiation.AEDebtorReference'
                CreditorReference:
                  $ref: '#/components/schemas/AEBankServiceInitiation.AECreditorReference'
                PaymentPurposeCode:
                  $ref: '#/components/schemas/AEBankServiceInitiation.AEPaymentPurposeCode'
                SponsoredTPPInformation:
                  $ref: '#/components/schemas/AEPushedAuthorizationRequests.AESponsoredTPPInformation'
                PaymentConsumption:
                  $ref: '#/components/schemas/AEConsentStatus.AEPaymentConsumption'
                OpenFinanceBilling:
                  $ref: '#/components/schemas/AEConsentStatus.AEBankServiceInitiationOpenFinanceBilling'
              required:
                - ConsentId
                - ExpirationDateTime
                - Status
                - CreationDateTime
                - StatusUpdateDateTime
                - ControlParameters
                - PaymentPurposeCode
              title: Bank Service Initiation Consent
            - $ref: '#/components/schemas/AEInsurance.AEReadInsuranceConsent1Properties'
          description: |-
            Event Data. This Data Object will contain the same API resource and Schema that has triggered the Event.

            If the value of `EventType` is `ResourceDeleted` this property will be omitted.
        Meta:
          type: object
          properties:
            EventDateTime:
              type: string
              format: date-time
            EventResource:
              type: string
            EventType:
              type: string
              enum:
                - Resource.Created
                - Resource.Updated
                - Resource.Deleted
            ConsentId:
              type: string
              minLength: 1
              maxLength: 128
              description: Consent identifier related to the event.
          required:
            - EventDateTime
            - EventResource
            - EventType
            - ConsentId
          description: Event Metadata.
      title: Consent Data Event
    AEWebhookEventSigned:
      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/AEWebhookEventTypes'
      description: Webhook Event Signed Schema
    AEWebhookEventTypes:
      anyOf:
        - $ref: '#/components/schemas/AEWebhookAccountOpeningEventProperties'
        - $ref: '#/components/schemas/AEWebhookConsentedEventProperties'
        - $ref: '#/components/schemas/AEWebhookFxQuoteEventProperties'
        - $ref: '#/components/schemas/AEWebhookInsuranceEventProperties'
        - $ref: '#/components/schemas/AEWebhookPaymentInitiationEventProperties'
    AEWebhookFxQuoteEventProperties:
      type: object
      required:
        - Data
        - Meta
      properties:
        Data:
          allOf:
            - $ref: '#/components/schemas/FxQuoteStatusUpdateEvent'
          description: >-
            FX Quote Event Data. This Data Object will contain the same API resource and Schema that has triggered the
            Event.
        Meta:
          type: object
          properties:
            EventDateTime:
              type: string
              format: date-time
            EventResource:
              type: string
            EventType:
              type: string
              enum:
                - Resource.Created
                - Resource.Updated
                - Resource.Deleted
            FxQuoteId:
              allOf:
                - $ref: '#/components/schemas/FxServiceInitiation.FxQuoteIdType'
              description: FX Quote identifier related to the event.
          required:
            - EventDateTime
            - EventResource
            - EventType
            - FxQuoteId
          description: Event Metadata.
      title: FX Quote Event
    AEWebhookInsuranceEventProperties:
      type: object
      required:
        - Data
        - Meta
      properties:
        Data:
          allOf:
            - $ref: '#/components/schemas/AEInsurance.AEInsuranceEvent'
          description: >-
            Insurance Quote Event Data. This Data Object will contain the same API resource and Schema that has
            triggered the Event.
        Meta:
          type: object
          properties:
            EventDateTime:
              type: string
              format: date-time
            EventResource:
              type: string
            EventType:
              type: string
              enum:
                - Resource.Created
                - Resource.Updated
                - Resource.Deleted
            QuoteId:
              allOf:
                - $ref: '#/components/schemas/AEInsurance.AEInsuranceResourceIdentifierType'
              description: Unique identifier for a quote created by an LFI
              example: 47409fec-4b04-4356-b3a1-6f5508524a5a
          required:
            - EventDateTime
            - EventResource
            - EventType
            - QuoteId
          description: Event Metadata.
      title: Insurance Quote Event
    AEWebhookPaymentInitiationEventProperties:
      type: object
      required:
        - Meta
      properties:
        Data:
          type: object
          properties:
            PaymentId:
              $ref: '#/components/schemas/UAEPaymentAPI.AEPaymentId'
            ConsentId:
              $ref: '#/components/schemas/UAEPaymentAPI.AEConsentId'
            PaymentTransactionId:
              $ref: '#/components/schemas/UAEPaymentAPI.AEPaymentTransactionId'
            Status:
              $ref: '#/components/schemas/UAEPaymentAPI.AEPaymentStatus'
            StatusUpdateDateTime:
              $ref: '#/components/schemas/UAEPaymentAPI.AEStatusUpdateDateTime'
            RejectReasonCode:
              type: array
              items:
                $ref: '#/components/schemas/UAEPaymentAPI.AERejectReason'
              minItems: 1
            CreationDateTime:
              $ref: '#/components/schemas/UAEPaymentAPI.AECreationDateTime'
            Charges:
              $ref: '#/components/schemas/AECharges'
            ExchangeRate:
              $ref: '#/components/schemas/UAEPaymentAPI.AEExchangeRateInformation'
            CurrencyRequest:
              $ref: '#/components/schemas/UAEPaymentAPI.AECurrencyRequest'
            Instruction:
              $ref: '#/components/schemas/UAEPaymentAPI.AEPaymentInstruction'
            PaymentPurposeCode:
              $ref: '#/components/schemas/UAEPaymentAPI.AEPaymentPurposeCode'
            DebtorReference:
              $ref: '#/components/schemas/UAEPaymentAPI.AEDebtorReference'
            OpenFinanceBilling:
              $ref: '#/components/schemas/UAEPaymentAPI.AEServiceInitiationOpenFinancePaymentBilling'
          required:
            - PaymentId
            - ConsentId
            - Status
            - StatusUpdateDateTime
            - CreationDateTime
            - Instruction
            - PaymentPurposeCode
            - OpenFinanceBilling
          description: >-
            Payment Initiation Event Data. This Data Object will contain the same API resource and Schema that has
            triggered the Event.


            If the value of `EventType` is `ResourceDeleted` this property will be omitted.
        Meta:
          type: object
          properties:
            EventDateTime:
              type: string
              format: date-time
            EventResource:
              type: string
            EventType:
              type: string
              enum:
                - Resource.Created
                - Resource.Updated
                - Resource.Deleted
            ConsentId:
              type: string
              minLength: 1
              maxLength: 128
              description: Consent identifier related to the event.
          required:
            - EventDateTime
            - EventResource
            - EventType
            - ConsentId
          description: Event Metadata.
      title: Payment Initiation Request
    AccountOpeningServiceInitiation.AEAccountIdType:
      type: string
      minLength: 1
      maxLength: 40
      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).
    AccountOpeningServiceInitiation.AEAccountOpeningCompletedStatusCode:
      type: string
      enum:
        - Completed
    AccountOpeningServiceInitiation.AEAccountOpeningStatusCodes:
      type: string
      enum:
        - Pending
        - AwaitingUserInput
        - AwaitingLFIProcesses
        - Rejected
    AccountOpeningServiceInitiation.OpeningStatusUpdateDateTime:
      type: string
      format: date-time
      description: The date and time the opening status was last updated.
    AccountOpeningStatusProperties:
      anyOf:
        - $ref: '#/components/schemas/AccountOpeningServiceInitiation.AEAccountOpeningStatusCodes'
        - $ref: '#/components/schemas/AccountOpeningServiceInitiation.AEAccountOpeningCompletedStatusCode'
    AccountOpeningStatusUpdateEvent:
      type: object
      required:
        - AccountId
        - OpeningStatus
        - OpeningStatusUpdateDateTime
      properties:
        AccountId:
          allOf:
            - $ref: '#/components/schemas/AccountOpeningServiceInitiation.AEAccountIdType'
          description: The unique identifier for the quote.
        LinkedOperations:
          type: object
          properties:
            FxQuoteId:
              allOf:
                - $ref: '#/components/schemas/FxServiceInitiation.FxQuoteIdType'
              description: >-
                The quote identifier returned by the LFI in the FX Quote. Required where the operation is part of the FX
                Quote journey.
          required:
            - FxQuoteId
          minProperties: 1
          description: Operations linked to the Account Opening Request. Provided to allow event correlation at the TPP.
        OpeningStatus:
          allOf:
            - $ref: '#/components/schemas/AccountOpeningStatusProperties'
          description: Status of the Account Opening request.
        OpeningStatusUpdateDateTime:
          $ref: '#/components/schemas/AccountOpeningServiceInitiation.OpeningStatusUpdateDateTime'
        AdditionalStatusInformation:
          type: string
          minLength: 1
          maxLength: 1000
          description: >-
            Additional information provided to the TPP by the LFI that qualifies the status, including next steps such
            as where further information is required, or reasons for rejection.
      description: Account Opening Request Status Data.
    FxQuoteStatusUpdateEvent:
      type: object
      required:
        - FxQuoteId
        - QuoteStatus
      properties:
        FxQuoteId:
          allOf:
            - $ref: '#/components/schemas/FxServiceInitiation.FxQuoteIdType'
          description: The unique identifier for the quote.
        QuoteStatus:
          allOf:
            - $ref: '#/components/schemas/FxServiceInitiation.AEFxQuoteStatusCodes'
          description: >-
            The status of the quote. Please refer to guidance in the business rules on the quote status model.


            The LFI is responsible for updating the statue to Completed and returning relevant information based on the
            finalized value.
        AdditionalStatusInformation:
          type: string
          minLength: 1
          maxLength: 1000
          description: >-
            Additional information provided to the TPP by the LFI that provides qualifies the status, including next
            steps such as where further information is required, or reasons for rejection.
        Trade:
          type: object
          properties:
            BuyAmount:
              allOf:
                - $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
              description: The amount of the currency being bought.
            SellAmount:
              allOf:
                - $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
              description: The amount of the currency being sold.
            Charges:
              type: array
              items:
                $ref: '#/components/schemas/FxServiceInitiation.AECharges'
              description: The charges associated with the request currency exchange.
          required:
            - BuyAmount
            - SellAmount
          description: Properties of the completed trade. Included when the `QuoteStatus` is `Completed`.
        Commission:
          type: object
          properties:
            CommissionAmount:
              allOf:
                - $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
              description: The commission payable for the FX Service Initiation trade.
          required:
            - CommissionAmount
          description: The finalised commission amount. Included when the `QuoteStatus` is `Completed`.
      description: FX Quote Status Data.
    FxServiceInitiation.AECharges:
      type: object
      required:
        - ChargeBearer
        - Type
        - Amount
      properties:
        ChargeBearer:
          $ref: '#/components/schemas/UAEPaymentAPI.AEChargeBearerType1Code'
        Type:
          $ref: '#/components/schemas/UAEPaymentAPI.AEExternalPaymentChargeTypeCode'
        Amount:
          $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
        Description:
          type: string
          minLength: 1
          maxLength: 140
          description: Description of the charge, for display to the User to help explain why the charge is levied.
    FxServiceInitiation.AEFxQuoteStatusCodes:
      type: string
      enum:
        - Accepted
        - AccountOpened
        - Actioned
        - Available
        - Cancelled
        - Completed
        - Expired
        - Funded
        - Rejected
    FxServiceInitiation.FxQuoteIdType:
      type: string
      minLength: 1
      maxLength: 128
      format: uuid
      description: >-
        Unique identifier for the quote, generated based on LFI implementation. `format: uuid` is provided as a hint to
        OpenAPI parsers, but LFIs can implement a unique identification mechanism of their choosing.
    UAEPaymentAPI.AEActiveCurrencyAmount:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: '#/components/schemas/UAEPaymentAPI.AEActiveOrHistoricAmount'
        Currency:
          $ref: '#/components/schemas/UAEPaymentAPI.AEActiveOrHistoricCurrencyCode'
      description: The Currency and Amount relating to the Payment
    UAEPaymentAPI.AEActiveOrHistoricAmount:
      type: string
      pattern: ^\d{1,16}\.\d{2}$
      description: >-
        A number of monetary units specified in an active currency where the unit of currency is explicit and compliant
        with ISO 4217.
    UAEPaymentAPI.AEActiveOrHistoricCurrencyCode:
      type: string
      pattern: ^[A-Z]{3,3}$
      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'.
    UAEPaymentAPI.AEChargeBearerType1Code:
      type: string
      enum:
        - BorneByCreditor
        - BorneByDebtor
        - Shared
      description: Specifies which party/parties will bear the charges associated with the processing of the payment transaction.
    UAEPaymentAPI.AEConsentId:
      type: string
      minLength: 1
      maxLength: 128
      description: Unique identification assigned by the TPP to identify the consent resource.
    UAEPaymentAPI.AECreationDateTime:
      type: string
      format: date-time
      description: >-
        Date and time at which the message 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. An example is below:

        2023-04-05T10:43:07+00:00
    UAEPaymentAPI.AECurrencyRequest:
      type: object
      required:
        - ExtendedPurpose
        - CurrencyOfTransfer
      properties:
        InstructionPriority:
          type: string
          enum:
            - Normal
            - Urgent
          description: >-
            Indicator of the urgency or order of importance that the instructing party would like the instructed party
            to apply to the processing of the instruction.
        ExtendedPurpose:
          type: string
          minLength: 1
          maxLength: 140
          description: Specifies the purpose of an international payment.
        ChargeBearer:
          $ref: '#/components/schemas/UAEPaymentAPI.AEChargeBearerType1Code'
        CurrencyOfTransfer:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Specifies the currency of the to be transferred amount, which is different from the currency of the debtor's
            account.
        DestinationCountryCode:
          type: string
          pattern: '[A-Z]{2,2}'
          description: >-
            Country in which Credit Account is domiciled. Code to identify a country, a dependency, or another area of
            particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166,
            Alpha-2 code).
        ExchangeRateInformation:
          type: object
          properties:
            UnitCurrency:
              type: string
              pattern: ^[A-Z]{3,3}$
            ExchangeRate:
              type: number
            RateType:
              type: string
              enum:
                - Actual
                - Agreed
                - Indicative
            ContractIdentification:
              type: string
              minLength: 1
              maxLength: 256
          required:
            - UnitCurrency
            - RateType
          description: Provides details on the currency exchange rate and contract.
        FxQuoteId:
          type: string
          minLength: 1
          maxLength: 128
          description: >-
            Required where the consent or payment initiation request relates to a previously quoted FX trade. The TPP
            must provide the `QuoteId` value where a long-lived consent exists, meaning that each payment initiation
            request will relate to a different `QuoteId` value.
      description: >-
        The details of the non-local currency or FX request that has been agreed between the User and the TPP.

        The requested ChargeBearer and ExchangeRateInformation are included in this object may be overwritten by the LFI
        in the returned Consent object.
    UAEPaymentAPI.AEDebtorReference:
      type: string
      minLength: 1
      maxLength: 35
      description: >-
        A Debtor Reference is a note is for the reference of a given User that may be available as additional
        information in relation to a given payment instruction.
    UAEPaymentAPI.AEExchangeRateInformation:
      type: object
      required:
        - UnitCurrency
        - ExchangeRate
        - RateType
      properties:
        UnitCurrency:
          type: string
          pattern: ^[A-Z]{3,3}$
          description: >-
            Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR,
            the unit currency is GBP.
        ExchangeRate:
          type: number
          description: >-
            The factor used for conversion of an amount from one currency to another. This reflects the price at which
            one currency was bought with another currency.
        RateType:
          type: string
          enum:
            - Actual
            - Agreed
            - Indicative
          description: Specifies the type used to complete the currency exchange.
        ContractIdentification:
          type: string
          minLength: 1
          maxLength: 256
          description: >-
            Unique and unambiguous reference to the foreign exchange contract agreed between the initiating
            party/creditor and the debtor agent.
        ExpirationDateTime:
          type: string
          format: date-time
          description: >-
            Specified date and time the exchange rate agreement 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. An example is below:

            2017-04-05T10:43:07+00:00
      description: >-
        Further detailed information on the exchange rate that has been used in the payment transaction - returned by
        the LFI.
    UAEPaymentAPI.AEExternalPaymentChargeTypeCode:
      type: string
      enum:
        - VAT
        - Fees
      description: Charge type, in a coded form.
    UAEPaymentAPI.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
    UAEPaymentAPI.AEPaymentId:
      type: string
      minLength: 1
      maxLength: 40
      description: An API specific unique identification as assigned by the LFI to identify the domestic Payment resource.
    UAEPaymentAPI.AEPaymentInstruction:
      type: object
      required:
        - Amount
      properties:
        Amount:
          $ref: '#/components/schemas/UAEPaymentAPI.AEActiveCurrencyAmount'
      description: >-
        The Initiation payload is sent by the initiating party to the LFI. It is used to request movement of funds from
        the debtor account to a creditor for a single payment.
    UAEPaymentAPI.AEPaymentPurposeCode:
      type: string
      minLength: 1
      maxLength: 3
      pattern: ^[A-Z]{3}$
      description: >-
        A category 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.
    UAEPaymentAPI.AEPaymentStatus:
      type: string
      enum:
        - Pending
        - AcceptedSettlementCompleted
        - AcceptedCreditSettlementCompleted
        - AcceptedWithoutPosting
        - Rejected
      description: >-
        Specifies the status of the payment information group

        * Pending: Payment initiation or individual transaction included in the payment initiation is pending. Further
        checks and status update will be performed.

        * Rejected: The payment initiation has been rejected

        * AcceptedSettlementCompleted: Settlement of the Debtor's account has been completed

        * AcceptedCreditSettlementCompleted: When the Creditor account has been credited with the funds of the payment
        initiated via the TPP

        * AcceptedWithoutPosting:  When the Recipient Bank has accepted the payment but has not applied the credit to
        the Creditor account yet.
    UAEPaymentAPI.AEPaymentTransactionId:
      type: string
      description: >-
        This is an end to end TransactionId that is generated by the underlying payment rails when it is sent from an
        Originating LFI to a Receiving LFI.

        For Aani Core transactions, this is the Aani Core generated TransactionId.


        This is not the same as the TransactionID in the Account Information Transactions API.


        The PaymentTransactionId must be populated if the payment is processed by the LFI.
    UAEPaymentAPI.AERejectReason:
      type: object
      required:
        - Code
        - Message
      properties:
        Code:
          type: string
          pattern: ^[A-Za-z]+\.[A-Za-z0-9]+$
          description: >-
            Rejected Reason Code is a namespaced rejection reason code. The first part of the code is the namespace,
            which is the name of the organisation or system (e.g., AANI) that is rejecting the payment, and the second
            part is the specific rejection reason code for the originating organisation or system.

            Payments that are rejected by AANI will have the AANI prefix, followed by the specific ANNI reason code.


            The Payment resouce is updated with the rejection reason code if a Rejected payment is initially created in
            a Pending state.

            If the Payment resource is rejected, and no Payment resource is created - a 4xx HTTP status code is returned
            to the TPP with the appropriate Error Response.
        Message:
          $ref: '#/components/schemas/UAEPaymentAPI.AEMessage'
      description: Rejection Reason
    UAEPaymentAPI.AEServiceInitiationOpenFinancePaymentBilling:
      type: object
      required:
        - Type
      properties:
        Type:
          type: string
          enum:
            - Collection
            - LargeValueCollection
            - PushP2P
            - PullP2P
            - Me2Me
          description: The type payment for billing
        MerchantId:
          type: string
          minLength: 8
          maxLength: 20
          description: MerchantId
      description: Billing parameters specified by the TPP for a payment initiation
    UAEPaymentAPI.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. An example is below:

        2023-04-05T10:43:07+00:00
    uuid:
      type: string
      minLength: 1
      maxLength: 128
      format: uuid
      description: >-
        A unique identifier, which may be a UUID. `format: uuid` is provided as a hint to OpenAPI parsers, but LFIs can
        implement a unique identification mechanism of their choosing.
  responses:
    400Error:
      description: Bad request
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError400ResponseBodySigned'
    401Error:
      description: Unauthorized
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
    403Error:
      description: Forbidden
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError403ResponseBodySigned'
    404Error:
      description: Not found
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
    405Error:
      description: Method Not Allowed
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
    406Error:
      description: Not Acceptable
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
    415Error:
      description: Unsupported Media Type
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
    429Error:
      description: Too Many Requests
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
        retry-after:
          required: true
          description: Number in seconds to wait
          schema:
            type: integer
            format: int64
    500Error:
      description: Internal Server Error
      headers:
        x-fapi-interaction-id:
          required: true
          description: An RFC4122 UID used as a correlation id.
          schema:
            type: string
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/AEError500ResponseBodySigned'
servers:
  - url: /
