> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openfinance-hackathon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtain an Access Token

> Request an Access Token based on a given grant type, indicated by `grant_type` and request payload properties.

Response provides information on the original Rich Authorization Request (RAR) as described in [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396).

The `application/json` Content Type is included in the Request Body for tooling compatibility, but requests **MUST** be sent using the Content Type `application/x-www-form-urlencoded`.



## OpenAPI

````yaml open-finance-api/yaml/uae-authorization-endpoints-openapi-dual-consents.yaml post /token
openapi: 3.0.0
info:
  title: UAE Authorization Endpoints API
  description: >-
    ## UAE Open Finance Authorization Endpoints Specification


    This API description provides the API descriptions for two OAuth 2.0
    operations included in the FAPI 2.0 Security Profile:


    * [Pushed Authorization
    Requests](https://datatracker.ietf.org/doc/html/rfc9126), which implement
    [Rich Authorization Requests](https://datatracker.ietf.org/doc/html/rfc9396)
    (RAR) payloads to provide Consent for a given use case.


    * Token operations that provide details of the RAR associated with a given
    Access Token request.


    Please note that the Authorization Request is provided as a plain JSON
    object, which only describes the payload of a signed JSON Web Token (JWS).


    Users of this API description must ensure they implement the Authorization
    Request as a JWS, encoding the payload as described by [RFC
    7515](https://datatracker.ietf.org/doc/html/rfc7515) and reflecting the
    requirements of the API Security Profile for the UAE Open Finance Framework.
  version: v2.1
servers:
  - url: /open-finance/auth/v2.1
security: []
tags:
  - name: Pushed Authorization Requests
    description: Operations to support Pushed Authorization Requests (PAR)
  - name: Token Endpoint
    description: Operations for creating OAuth 2.0 Access Tokens
paths:
  /token:
    post:
      tags:
        - Token Endpoint
      summary: Obtain an Access Token
      description: >-
        Request an Access Token based on a given grant type, indicated by
        `grant_type` and request payload properties.


        Response provides information on the original Rich Authorization Request
        (RAR) as described in [RFC
        9396](https://datatracker.ietf.org/doc/html/rfc9396).


        The `application/json` Content Type is included in the Request Body for
        tooling compatibility, but requests **MUST** be sent using the Content
        Type `application/x-www-form-urlencoded`.
      operationId: CreateAccessTokenRequestV21
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
                - $ref: >-
                    #/components/schemas/AuthorizationCodeGrantTokenRequestProperties
                - $ref: '#/components/schemas/RefreshTokenGrantTokenRequestProperties'
          application/x-www-form-urlencoded:
            schema:
              anyOf:
                - $ref: >-
                    #/components/schemas/AuthorizationCodeGrantTokenRequestProperties
                - $ref: '#/components/schemas/RefreshTokenGrantTokenRequestProperties'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/AEAuthorizationEndpointsV21.AEAuthorizationCodeGrantTokenResponseProperties
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthBadRequestErrorResponse'
components:
  schemas:
    AuthorizationCodeGrantTokenRequestProperties:
      type: object
      required:
        - client_id
        - client_assertion_type
        - client_assertion
        - code_verifier
        - grant_type
        - code
        - redirect_uri
      properties:
        client_id:
          type: string
          description: >-
            The OAuth 2.0 Client ID of the Client, as set in the Open Finance
            Trust Framework (OFTF).
        client_assertion_type:
          type: string
          enum:
            - urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
          description: >-
            Client Assertion using JWT Authentication, as described by [RFC
            7523](https://datatracker.ietf.org/doc/html/rfc7523#section-2.2)
        client_assertion:
          type: string
          description: private_key_jwt client assertion
        code_verifier:
          type: string
          description: >-
            Code verifier value, created for Proof of Key Code Exchange
            correlating with value sent with Authorization Request.
        grant_type:
          type: string
          enum:
            - authorization_code
          description: The grant type, which must be set to `authorization_code`.
        code:
          type: string
          description: >-
            The authorization code received by the TPP from the Authorization
            Server.
        redirect_uri:
          type: string
          format: uri
          description: >-
            The OAuth 2.0 redirect URI of the Client, as set in the Open Finance
            Trust Framework. This **MUST** match a redirect URI value registered
            at the OFTF.
        scope:
          type: string
          description: >-
            [Access Token
            Scope](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3) as
            sent in Authorization Request and granted by the End User.
      additionalProperties: false
    RefreshTokenGrantTokenRequestProperties:
      type: object
      required:
        - client_id
        - client_assertion_type
        - client_assertion
        - grant_type
        - refresh_token
      properties:
        client_id:
          type: string
          description: >-
            The OAuth 2.0 Client ID of the Client, as set in the Open Finance
            Trust Framework (OFTF).
        client_assertion_type:
          type: string
          enum:
            - urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
          description: >-
            Client Assertion using JWT Authentication, as described by [RFC
            7523](https://datatracker.ietf.org/doc/html/rfc7523#section-2.2)
        client_assertion:
          type: string
          description: private_key_jwt client assertion
        grant_type:
          type: string
          enum:
            - refresh_token
          description: The grant type, which must be set to `refresh_token`.
        refresh_token:
          type: string
          description: >-
            [OAuth 2.0 Refresh
            Token](https://datatracker.ietf.org/doc/html/rfc6749#section-1.5).
            Omitted from responses where not supported by a given consent type.
        scope:
          type: string
          description: Access Token scope. Omitted if not required.
      additionalProperties: false
    AEAuthorizationEndpointsV21.AEAuthorizationCodeGrantTokenResponseProperties:
      type: object
      required:
        - access_token
        - token_type
        - expires_in
        - authorization_details
      properties:
        access_token:
          type: string
          description: >-
            [OAuth 2.0 Access
            Token](https://datatracker.ietf.org/doc/html/rfc6749#section-1.4)
            issued through Authorization Code grant.
        token_type:
          type: string
          enum:
            - Bearer
          description: Access Token type.
        expires_in:
          type: integer
          description: Validity period of Access Token in seconds.
        scope:
          type: string
          description: >-
            [Access Token
            Scope](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3) as
            sent in Authorization Request and granted by the End User.
        state:
          type: string
          description: >-
            OAuth 2.0 `state` value, provided as a means to support integrity
            checking by the Client under FAPI 2.0. Omitted from Refresh Token
            Grant.
        refresh_token:
          type: string
          description: >-
            [OAuth 2.0 Refresh
            Token](https://datatracker.ietf.org/doc/html/rfc6749#section-1.5).
            Omitted from responses where not supported by a given consent type.
        id_token:
          type: string
          description: >-
            OpenID Connect ID Token, returned where applicable to requested
            scope and supported flows.
        authorization_details:
          type: array
          items:
            $ref: '#/components/schemas/AELodgedAuthorizationDetailsTypes'
          minItems: 1
          description: Authorization details are sent in the Pushed Authorization Request
      additionalProperties: false
    OAuthBadRequestErrorResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/OAuthErrorResponse'
      description: Bad Request
      additionalProperties: false
    AELodgedAuthorizationDetailsTypes:
      oneOf:
        - $ref: >-
            #/components/schemas/AEBankDataSharingLodgedAuthorizationDetailsProperties
        - $ref: >-
            #/components/schemas/AEBankServiceInitiationLodgedAuthorizationDetailsProperties
        - $ref: >-
            #/components/schemas/AEInsuranceDataSharingLodgedAuthorizationDetailsProperties
      discriminator:
        propertyName: type
        mapping:
          urn:openfinanceuae:account-access-consent:v2.1: >-
            #/components/schemas/AEBankDataSharingLodgedAuthorizationDetailsProperties
          urn:openfinanceuae:service-initiation-consent:v2.1: >-
            #/components/schemas/AEBankServiceInitiationLodgedAuthorizationDetailsProperties
          urn:openfinanceuae:insurance-consent:v2.1: >-
            #/components/schemas/AEInsuranceDataSharingLodgedAuthorizationDetailsProperties
    OAuthErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/OAuthErrorCodes'
        error_description:
          type: string
          description: Description of the error providing additional information
        error_uri:
          type: string
          description: >-
            A URI identifying a human-readable web page with information about
            the error
      description: Error returned from endpoints compliant with security profile
      additionalProperties: false
    AEBankDataSharingLodgedAuthorizationDetailsProperties:
      type: object
      required:
        - type
        - consent
      properties:
        type:
          type: string
          enum:
            - urn:openfinanceuae:account-access-consent:v2.1
        consent:
          $ref: >-
            #/components/schemas/AEConsentStatus.AEBankDataSharingConsentProperties
      description: Bank Data Sharing Consent
      additionalProperties: false
    AEBankServiceInitiationLodgedAuthorizationDetailsProperties:
      type: object
      required:
        - type
        - consent
      properties:
        type:
          type: string
          enum:
            - urn:openfinanceuae:service-initiation-consent:v2.1
        consent:
          $ref: >-
            #/components/schemas/AEConsentStatus.AEBankServiceInitiationConsentProperties
      description: Bank Service Initiation Consent
      additionalProperties: false
    AEInsuranceDataSharingLodgedAuthorizationDetailsProperties:
      type: object
      required:
        - type
        - consent
      properties:
        type:
          type: string
          enum:
            - urn:openfinanceuae:insurance-consent:v2.1
        consent:
          $ref: '#/components/schemas/AEInsurance.AEReadInsuranceConsent1'
      description: Insurance Data Sharing Consent
      additionalProperties: false
    OAuthErrorCodes:
      type: string
      enum:
        - invalid_request
        - invalid_client
        - invalid_grant
        - unauthorized_client
        - unsupported_grant_type
        - invalid_scope
      description: >-
        Status code corresponding to error condition to be returned to the
        client
    AEConsentStatus.AEBankDataSharingConsentProperties:
      type: object
      required:
        - Data
        - Links
      properties:
        Data:
          type: object
          properties:
            ConsentId:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentId'
            BaseConsentId:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEBaseConsentId
            ConsentCombination:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEConsentCombinationCodes
            CombinedConsentGroupId:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AECombinedConsentGroupId
            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/AEPushedAuthorizationRequests.AEBankDataSharingConsentPermissions
              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.


                **This property has been deprecated at v2.1 and has been
                replaced by the Mandated Accounts and Account**

                **Sub Type feature.**
              deprecated: true
            OnBehalfOf:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.OnBehalfOf'
            OpenFinanceBilling:
              $ref: >-
                #/components/schemas/AEConsentStatus.AEBankDataSharingOpenFinanceBilling
            RevokedBy:
              $ref: '#/components/schemas/AEConsentStatus.AERevokedByCodes'
          required:
            - ConsentId
            - ConsentCombination
            - CreationDateTime
            - Status
            - StatusUpdateDateTime
            - Permissions
            - ExpirationDateTime
            - OpenFinanceBilling
          additionalProperties: false
        Subscription:
          $ref: '#/components/schemas/AEStandardModels.AEEventNotification'
        Links:
          $ref: '#/components/schemas/AEStandardModels.AELinksSelf'
        Meta:
          $ref: '#/components/schemas/AEStandardModels.AEMeta'
      additionalProperties: false
    AEConsentStatus.AEBankServiceInitiationConsentProperties:
      type: object
      required:
        - Data
        - Links
      properties:
        Data:
          type: object
          properties:
            ConsentId:
              $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEConsentId'
            BaseConsentId:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEBaseConsentId
            ConsentCombination:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEConsentCombinationCodes
            CombinedConsentGroupId:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AECombinedConsentGroupId
            BeneficiaryType:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationBeneficiaryTypeCodes
              description: >-
                The beneficiary type sent in the original Authorization Request,
                which reflects the Creditor information sent to the LFI.
            IsSingleAuthorization:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.IsSingleAuthorization
            AuthorizationExpirationDateTime:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AuthorizationExpirationDateTime
            Permissions:
              type: array
              items:
                $ref: >-
                  #/components/schemas/AEPushedAuthorizationRequests.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/AEConsentStatus.AECreationDateTime'
            StatusUpdateDateTime:
              $ref: '#/components/schemas/AEConsentStatus.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/AEConsentStatus.BankServiceInitiationControlParameterTypes
            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
            - ConsentCombination
            - BeneficiaryType
            - ExpirationDateTime
            - Status
            - CreationDateTime
            - StatusUpdateDateTime
            - ControlParameters
            - PaymentPurposeCode
          additionalProperties: false
        Subscription:
          $ref: '#/components/schemas/AEStandardModels.AEEventNotification'
        Links:
          $ref: '#/components/schemas/AEConsentStatus.AELinksRelatedPayment'
        Meta:
          $ref: '#/components/schemas/AEConsentStatus.AEMetaMultiAuthorization'
      description: >-
        Status of the Authorization Request, qualified with additional
        information held by the API Hub.
      additionalProperties: false
    AEInsurance.AEReadInsuranceConsent1:
      type: object
      required:
        - Data
        - Links
        - Meta
      properties:
        Data:
          $ref: '#/components/schemas/AEInsurance.AEReadInsuranceConsent1Properties'
        Subscription:
          $ref: '#/components/schemas/EventNotification'
        Links:
          $ref: '#/components/schemas/LinksSelf'
        Meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    AEPushedAuthorizationRequests.AEConsentId:
      type: string
      minLength: 1
      maxLength: 128
      description: Unique identification assigned by the TPP to identify the Consent.
    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.AEConsentCombinationCodes:
      type: string
      enum:
        - SingleBankDataSharingConsent
        - SingleBankServiceInitiationConsent
        - SingleInsuranceDataSharingConsent
        - CombinedBankDataSharingConsent
        - CombinedBankServiceInitiationConsent
        - CombinedBankConsent
        - CombinedPaymentConsent
    AEPushedAuthorizationRequests.AECombinedConsentGroupId:
      type: string
      minLength: 1
      maxLength: 128
      format: uuid
      description: >-
        Combined Consent Group ID, which provides a unique identifier for
        two-or-more consents submitted as RARs in a PAR.
    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.AEConsentStatusCodes:
      type: string
      enum:
        - AwaitingAuthorization
        - Authorized
        - Rejected
        - Revoked
        - Expired
        - Consumed
        - Suspended
        - Void
      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.|
         | Void | Terminal | The consent has been voided due to a Combined Consent constraint and cannot be authorised |
    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
    AEPushedAuthorizationRequests.AEBankDataSharingConsentPermissions:
      oneOf:
        - $ref: '#/components/schemas/AEBankDataSharingConsentPermissionCodesItem'
        - type: array
          items:
            type: object
            properties:
              AccountSubTypes:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/AEBankDataSharing.AEExternalAccountSubTypeCode
                minItems: 1
              Permissions:
                $ref: >-
                  #/components/schemas/AEBankDataSharingConsentPermissionCodesItem
              Mandated:
                type: string
                enum:
                  - All
                  - MinimumOne
                description: >-
                  Accounts that a User is mandated to shared under a given
                  Consent, and that will be pre-selected at the LFI during
                  Authorization.


                  Permissible values:


                  * `All`: If multiple accounts are present all must be chosen.
                    
                  * `MinimumOne`: If the user has one or multiple matching
                  accounts, one must be selected.
            required:
              - AccountSubTypes
              - Permissions
            additionalProperties: false
    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
    AEBankDataSharing.AEExternalAccountTypeCode:
      type: string
      enum:
        - Retail
        - SME
        - Corporate
      description: Specifies the type of account (Retail, SME or Corporate).
    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
    AEPushedAuthorizationRequests.OnBehalfOf:
      type: object
      properties:
        TradingName:
          type: string
          description: Trading Name
        LegalName:
          type: string
          description: Legal Name
        IdentifierType:
          type: string
          enum:
            - Other
          description: Identifier Type
        Identifier:
          type: string
          description: Identifier
      description: On Behalf Of
      additionalProperties: false
    AEConsentStatus.AEBankDataSharingOpenFinanceBilling:
      type: object
      required:
        - UserType
        - Purpose
      properties:
        IsLargeCorporate:
          type: boolean
          description: Customer has more than 100 million AED turnover.
        UserType:
          type: string
          enum:
            - Retail
            - SME
            - Corporate
          description: Type of Customer.
        Purpose:
          type: string
          enum:
            - AccountAggregation
            - RiskAssessment
            - TaxFiling
            - Onboarding
            - Verification
            - QuoteComparison
            - BudgetingAnalysis
            - FinancialAdvice
            - AuditReconciliation
          description: Purpose of data sharing request.
      description: Billing parameters specified by the TPP.
      additionalProperties: false
    AEConsentStatus.AERevokedByCodes:
      type: string
      enum:
        - LFI
        - TPP
        - LFI.InitiatedByUser
        - TPP.InitiatedByUser
      description: |-
        Denotes the Identifier of the revocation.

        | Identifier| Description|
        |-----------|------------|
        | LFI | Revoked by LFI without User initiation|
        | TPP | Revoked by TPP without User initiation|
        | LFI.InitiatedByUser | Initiated by User via the LFI|
        | TPP.InitiatedByUser | Initiated by User via the TPP|
    AEStandardModels.AEEventNotification:
      type: object
      required:
        - Webhook
      properties:
        Webhook:
          type: object
          properties:
            Url:
              type: string
            IsActive:
              type: boolean
          description: A Webhook Schema
          additionalProperties: false
      description: A Webhook Subscription Schema
      additionalProperties: false
    AEStandardModels.AELinksSelf:
      type: object
      required:
        - Self
      properties:
        Self:
          $ref: '#/components/schemas/AEStandardModels.AESelfLink'
      description: Links relevant to the resource
      additionalProperties: false
    AEStandardModels.AEMeta:
      type: object
      description: Metadata relevant to the resource
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationBeneficiaryTypeCodes:
      type: string
      enum:
        - BulkBatch
        - SingleCreditor
        - MultiCreditor
        - OpenCreditor
    AEPushedAuthorizationRequests.IsSingleAuthorization:
      type: boolean
      description: >-
        Specifies to the LFI that the consent authorization must be completed by
        a single authorizer at the LFI.
    AEPushedAuthorizationRequests.AuthorizationExpirationDateTime:
      type: string
      format: date-time
      description: >-
        The date and time by which a Consent (in AwaitingAuthorization status)
        must be Authorized by the User.
    AEPushedAuthorizationRequests.AEBankServiceInitiationConsentPermissionCodes:
      type: string
      enum:
        - ReadAccountsBasic
        - ReadAccountsDetail
        - ReadBalances
        - ReadRefundAccount
    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.
      additionalProperties: false
    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.
      additionalProperties: false
    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.
      additionalProperties: false
    AEConsentStatus.BankServiceInitiationControlParameterTypes:
      oneOf:
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationDelegatedSca
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedOnDemand
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariableOnDemand
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule
        - $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationSingleInstantPayment
      description: Control Parameters supported for all Rich Authorization Request types.
      discriminator:
        propertyName: Type
        mapping:
          VariablePeriodicSchedule: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule
          VariableOnDemand: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariableOnDemand
          VariableDefinedSchedule: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule
          SingleInstantPayment: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationSingleInstantPayment
          FixedPeriodicSchedule: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule
          FixedOnDemand: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedOnDemand
          FixedDefinedSchedule: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule
          DelegatedSCA: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationDelegatedSca
    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.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.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.
    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.
      additionalProperties: false
    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
      additionalProperties: false
    AEConsentStatus.AEBankServiceInitiationOpenFinanceBilling:
      type: object
      properties:
        IsLargeCorporate:
          type: boolean
          description: Customer has more than 100 million AED turnover.
      description: Billing parameters specified by the LFI.
      additionalProperties: false
    AEConsentStatus.AELinksRelatedPayment:
      type: object
      required:
        - Self
        - Related
      properties:
        Self:
          type: string
          format: url
        Related:
          type: array
          items:
            type: string
          description: >-
            A link to the related payments resource:


            - For a Single Payment, this Array must have 1 entry, associated
            with the Single Payment resource created against this consent.

            - For Multi-Payment, this Array will have 1 or more entries of all
            the Payment resources created against this Consent.
      description: Links relevant to the consent.
      additionalProperties: false
    AEConsentStatus.AEMetaMultiAuthorization:
      type: object
      properties:
        MultipleAuthorizers:
          type: object
          properties:
            TotalRequired:
              type: integer
              description: The total number of Authorizers required to process the request.
            Authorizations:
              type: array
              items:
                type: object
                properties:
                  AuthorizerId:
                    type: string
                    description: Authorizer identifier, as assigned by the LFI.
                  AuthorizerType:
                    type: string
                    description: >-
                      The Type of Authorizer. For example, Financial,
                      Management, etc.
                  AuthorizationDate:
                    type: string
                    format: date-time
                    description: |2-
                        The date and of when the Authorization occurred. All dates in the JSON payloads are represented in ISO 8601 date-time format. 
                        
                        All date-time fields in responses must include the timezone for example: 2023-04-05T10:43:07+00:00      
                  AuthorizationStatus:
                    type: string
                    enum:
                      - Pending
                      - Approved
                      - Rejected
                    description: >-
                      The Status reflecting the Authorizer's final decision
                      regarding the request.
                additionalProperties: false
          description: Multiple Authorizers Schema
          additionalProperties: false
      description: >-
        Meta Data with Multi-Authorization relevant to the payload.

        For a payment, it represents any Authorizers within the LFI domain that
        are involved in approving the payment request.
      additionalProperties: false
    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
          additionalProperties: false
        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.
      additionalProperties: false
    EventNotification:
      type: object
      required:
        - Webhook
      properties:
        Webhook:
          allOf:
            - $ref: '#/components/schemas/AEWebhook'
          description: >-
            Properties of the Webhook registered to receive event notifications
            related to entity status.
      additionalProperties: false
    LinksSelf:
      type: object
      required:
        - Self
      properties:
        Self:
          $ref: '#/components/schemas/Self'
      description: Links relevant to the resource
      additionalProperties: false
    Meta:
      type: object
      description: Metadata relevant to the resource
      additionalProperties: false
    AEBankDataSharingConsentPermissionCodesItem:
      type: array
      items:
        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.
    AEStandardModels.AESelfLink:
      type: string
      format: uri
      description: A link to the current resource
    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.AEExternalPaymentChargeTypeCode:
      type: string
      enum:
        - VAT
        - Fees
      description: Charge type, in a coded form.
    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.
      additionalProperties: false
    AEBankServiceInitiation.AERateType:
      type: string
      enum:
        - Actual
        - Agreed
        - Indicative
      description: Specifies the type used to complete the currency exchange.
    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.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.
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationDelegatedSca:
      type: object
      required:
        - Type
      properties:
        Type:
          type: string
          enum:
            - DelegatedSCA
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationFixedDefinedSchedule:
      type: object
      required:
        - Type
        - Schedule
      properties:
        Type:
          type: string
          enum:
            - FixedDefinedSchedule
          description: The Periodic Schedule Type
        Schedule:
          type: array
          items:
            $ref: >-
              #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationFixedSchedule
          minItems: 1
          maxItems: 53
      description: >-
        Payment Schedule denoting a list of pre-defined future dated payments
        all with fixed amounts and dates.
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationFixedOnDemand:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Amount
        - Controls
      properties:
        Type:
          type: string
          enum:
            - FixedOnDemand
        PeriodType:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodStartDate'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
        Controls:
          type: object
          properties:
            MaximumCumulativeValueOfPayments:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.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.    
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
          additionalProperties: false
      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
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationFixedPeriodicSchedule:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Amount
      properties:
        Type:
          type: string
          enum:
            - FixedPeriodicSchedule
        PeriodType:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodStartDate'
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
        Controls:
          type: object
          properties:
            MaximumCumulativeValueOfPayments:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.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.    
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
          minProperties: 1
          additionalProperties: false
      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.
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationVariableDefinedSchedule:
      type: object
      required:
        - Type
        - Schedule
      properties:
        Type:
          type: string
          enum:
            - VariableDefinedSchedule
          description: The Periodic Schedule Type
        Schedule:
          type: array
          items:
            $ref: >-
              #/components/schemas/AEPushedAuthorizationRequests.AEBankServiceInitiationVariableSchedule
          minItems: 1
          maxItems: 53
      description: >-
        Payment Schedule denoting a list of pre-defined future dated payments
        all with variable amounts and dates.
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationVariableOnDemand:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
      properties:
        Type:
          type: string
          enum:
            - VariableOnDemand
        PeriodType:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodStartDate'
        Controls:
          type: object
          properties:
            MaximumIndividualAmount:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEMaximumIndividualAmount
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
            MaximumCumulativeValueOfPayments:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.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.    
          minProperties: 1
          additionalProperties: false
      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
      additionalProperties: false
    AEPushedAuthorizationRequests.AEBankServiceInitiationVariablePeriodicSchedule:
      type: object
      required:
        - Type
        - PeriodType
        - PeriodStartDate
        - Controls
      properties:
        Type:
          type: string
          enum:
            - VariablePeriodicSchedule
        PeriodType:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodType'
        PeriodStartDate:
          $ref: '#/components/schemas/AEPushedAuthorizationRequests.AEPeriodStartDate'
        Controls:
          type: object
          properties:
            MaximumIndividualAmount:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.AEMaximumIndividualAmount
              description: >-
                This is the Maximum amount a variable payment can take per
                period.
            MaximumCumulativeValueOfPaymentsPerPeriod:
              $ref: >-
                #/components/schemas/AEPushedAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments
            MaximumCumulativeNumberOfPaymentsPerPeriod:
              type: integer
            MaximumCumulativeValueOfPayments:
              allOf:
                - $ref: >-
                    #/components/schemas/AEPushedAuthorizationRequests.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.    
          required:
            - MaximumIndividualAmount
          additionalProperties: false
      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.
      additionalProperties: false
    AEPushedAuthorizationRequests.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.
      additionalProperties: false
    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
      additionalProperties: false
    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.
    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.
      additionalProperties: false
    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
      additionalProperties: false
    AEConsentStatusCode:
      type: string
      enum:
        - Authorized
        - AwaitingAuthorization
        - Rejected
        - Revoked
        - Expired
        - Suspended
        - Void
    AEInsurance.AERevokedByCode:
      type: string
      enum:
        - LFI
        - TPP
        - LFI.InitiatedByUser
        - TPP.InitiatedByUser
    AEWebhook:
      type: object
      required:
        - IsActive
      properties:
        Url:
          type: string
          pattern: ^https:\/\/.+
          description: >-
            The registered Webhook URL at which event notifications will be
            received. Required on first registration of the Webhook.
        IsActive:
          type: boolean
          description: >-
            Indicator for whether event notifications should be sent to the TPP.
            When true event notifications will be sent to the registered URL.
      description: A Webhook Subscription Schema
      additionalProperties: false
    Self:
      type: string
      format: uri
      description: A link to the current resource
    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'.
    AEPushedAuthorizationRequests.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.

            An example is: 2023-04-05
        Amount:
          $ref: '#/components/schemas/AEStandardModels.AEAmountAndCurrency'
      additionalProperties: false
    AEPushedAuthorizationRequests.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.|
    AEPushedAuthorizationRequests.AEPeriodStartDate:
      type: string
      format: date
      description: Specifies the start date of when a payment schedule begins.
    AEPushedAuthorizationRequests.AEPeriodTypeMaximumCumulativeValueOfPayments:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEActiveOrHistoricAmount
        Currency:
          $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEActiveOrHistoricCurrencyCode
      description: >-
        The maximum cumulative payment value of all payment initiations per
        Period Type.
      additionalProperties: false
    AEPushedAuthorizationRequests.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/AEPushedAuthorizationRequests.AEMaximumIndividualAmount
          description: This is the Maximum amount a variable payment can take per period.
      additionalProperties: false
    AEPushedAuthorizationRequests.AEMaximumIndividualAmount:
      type: object
      required:
        - Amount
        - Currency
      properties:
        Amount:
          $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEActiveOrHistoricAmount
        Currency:
          $ref: >-
            #/components/schemas/AEPushedAuthorizationRequests.AEActiveOrHistoricCurrencyCode
      description: This is the Maximum amount a variable payment can take per period.
      additionalProperties: false
    AEInsurance.AEConsentPermissionCodes:
      type: string
      enum:
        - ReadInsurancePolicies
        - ReadCustomerBasic
        - ReadCustomerDetail
        - ReadCustomerPaymentDetails
        - ReadInsuranceProduct
        - ReadCustomerClaims
        - ReadInsurancePremium
    AEOnBehalfOfIdentifierType:
      type: string
      enum:
        - Other
    AEPushedAuthorizationRequests.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'
    AEPushedAuthorizationRequests.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'.

````