Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Awesome api app render macro
authHeaderName
linksColor#0052cc
showInfotrue
allowSpecUrlLoadfalse
primaryColor#0052CC
schemaStyletable
methodGetColor#0065FF
authHeaderValue
methodPutColor#6554c0
generalThemeconfluence_light
allowTrytrue
layoutHeight800
allowAdvancedSearchfalse
codeBg#F4F5F7
methodHeadColor#ffab00
navHoverTextColor
showComponentstrue
allowServerSelectiontrue
textColor#172B4D
methodPatchColor#ffab00
navBgColor#FAFBFC
codeFg#172B4D
navTextColor#172B4D
fontSizedefault
sortEndpointsBymethod
usePathInNavBarfalse
navAccentColor#6554C0
methodDeleteColor#ff5630
headerColor#fff
allowAuthenticationfalse
bgColor#fff
allowSearchfalse
sortTagstrue
themelight
methodPostColor#36b37e
authTypeNone
inlineCodeFg#6554C0
resourceContentTypejson
showHeaderfalse
allowSpecFileLoadfalse
inlineCodeBg#F4F5F7
renderStyleread
layoutcolumn
headingText
navItemSpacingdefault
infoDescriptionHeadingsInNavbartrue
specUrl
navHoverBgColor
resourceTypeCONTENT
openapi: "3.0.0"
info:
  title: "UAE Payment API"
  description: "## UAE Open Finance Payment API Specification"
  version: "v1.0-draft5rc1"
servers:
  - url: "/open-finance/payment/v1.0-draft5rc1"
tags:
  - name: Payment Initiation
    description: Initiate a Payment Consent
  - name: Payment Instruction
    description: Instruct the Payment
  - name: Payment Instruction File
    description: Instruct the File Payment
paths:
  /payment-consents:
    get:
      tags:
        - "Payment Initiation"
      summary: "Retrieve Payment Consents by BaseConsentId"
      description: |
        Retrieve all Payment Consents for an BaseConsentId
      operationId: "RetrievePaymentConsentsByBaseConsentId"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/baseConsentId"
      responses:
        "200":
          $ref: "#/components/responses/200BaseConsentIdConsentsRetrieve"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /payment-consents/{ConsentId}:
    get:
      tags:
        - "Payment Initiation"
      summary: "Retrieve a Payment Consent"
      description: |
        Retrieve a Payment Consent
      operationId: "RetrievePaymentConsent"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/ConsentId"
      responses:
        "200":
          $ref: "#/components/responses/200PaymentConsentRetrieve"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
    patch:
      tags:
        - "Payment Initiation"
      summary: "Modify a Payment Consent"
      description: |
        Modify a Payment Consent
      operationId: "PatchPaymentConsent"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/ConsentId"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
      requestBody:
        description: |
          Request Body
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/AEPatchPaymentConsentSigned"
      responses:
        "204":
          $ref: "#/components/responses/204NoContent"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /payment-consents/{ConsentId}/refund:
    get:
      tags:
        - "Payment Initiation"
      summary: "Retrieve the Refund Details for a Payment Consent"
      description: |
        Retrieve a Payment Consent
      operationId: "RetrievePaymentConsentRefund"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/ConsentId"
      responses:
        "200":
          $ref: "#/components/responses/200PaymentConsentRefundRetrieve"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /payment-consents/{ConsentId}/file:
    post:
      tags:
        - "Payment Initiation"
      summary: "Create a File Payment Consent"
      description: |
        Create a File Payment Consent
      operationId: "CreateFilePaymentConsent"
      parameters:
        - $ref: "#/components/parameters/ConsentId"
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/x-idempotency-key"
      requestBody:
        description: |
          Request Body
        content:
          '*/*':
            schema:
              type: string
              description: Accepts any content type.
      responses:
        "200":
          $ref: "#/components/responses/200NoContent"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - UserOAuth2Security:
            - openid
            - payments
  /payments:
    post:
      tags:
        - "Payment Instruction"
      summary: "Create a Payment"
      description: |
        Create a Payment
      operationId: "CreatePayment"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/x-idempotency-key"
      requestBody:
        description: |
          Request Body
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/AEPaymentRequestSigned"
      responses:
        "201":
          $ref: "#/components/responses/201PaymentId"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - UserOAuth2Security:
            - openid
            - payments
    head:
      tags:
        - "Payment Instruction"
      summary: "Query for a PaymentId"
      description: |
        Lookup the Payments Resource (PaymentId) using the x-idempotency-key. 
        The Location response Header must return the full Url of the Payment resource associated with the x-idempotency-key.
        This is an alternative way for TPPs to obtain a PaymentId where they did not receive any response body from the LFI (due to network error or timeout).
      operationId: "QueryPaymentResource"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/x-idempotency-key"
      responses:
        "204":
          $ref: "#/components/responses/204NoContentHead"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /payments/{PaymentId}:
    get:
      tags:
        - "Payment Instruction"
      summary: "Retrieve a Payment"
      description: |
        Retrieve a Payment
      operationId: "RetrievePayment"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/PaymentId"
      responses:
        "200":
          $ref: "#/components/responses/200PaymentId"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /file-payments:
    post:
      tags:
        - "Payment Instruction File"
      summary: "Create a File Payment"
      description: |
        Create a File Payment
      operationId: "CreateFilePayment"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/x-idempotency-key"
      requestBody:
        description: |
          Request Body
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/AEFilePaymentRequestSigned"
      responses:
        "201":
          $ref: "#/components/responses/201FilePaymentId"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - UserOAuth2Security:
            - openid
            - payments
    head:
      tags:
        - "Payment Instruction File"
      summary: "Query for a File PaymentId"
      description: |
        Lookup the File Payments Resource (PaymentId) using the x-idempotency-key. 
        The Location response Header must return the full Url of the Payment resource associated with the x-idempotency-key.
        This is an alternative way for TPPs to obtain a PaymentId where they did not receive any response body from the LFI (due to network error or timeout).
      operationId: "QueryFilePaymentResource"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/x-idempotency-key"
      responses:
        "204":
          $ref: "#/components/responses/204NoContentHead"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /file-payments/{PaymentId}:
    get:
      tags:
        - "Payment Instruction File"
      summary: "Retrieve a File Payment"
      description: |
        Retrieve a File Payment
      operationId: "RetrieveFilePayment"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/PaymentId"
      responses:
        "200":
          $ref: "#/components/responses/200FilePaymentId"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
  /file-payments/{PaymentId}/report:
    get:
      tags:
        - "Payment Instruction File Report"
      summary: "Retrieve a File Payment Report"
      description: |
        Retrieve a File Payment Report
      operationId: "RetrieveFilePaymentReport"
      parameters:
        - $ref: "#/components/parameters/authorization"
        - $ref: "#/components/parameters/x-fapi-auth-date"
        - $ref: "#/components/parameters/x-fapi-customer-ip-address"
        - $ref: "#/components/parameters/x-fapi-interaction-id-request"
        - $ref: "#/components/parameters/x-customer-user-agent"
        - $ref: "#/components/parameters/PaymentId"
      responses:
        "200":
          $ref: "#/components/responses/200FilePaymentsFilePaymentIdReportFile"
        "400":
          $ref: "#/components/responses/400Error"
        "401":
          $ref: "#/components/responses/401Error"
        "403":
          $ref: "#/components/responses/403Error"
        "404":
          $ref: "#/components/responses/404Error"
        "405":
          $ref: "#/components/responses/405Error"
        "406":
          $ref: "#/components/responses/406Error"
        "415":
          $ref: "#/components/responses/415Error"
        "429":
          $ref: "#/components/responses/429Error"
        "500":
          $ref: "#/components/responses/500Error"
      security:
        - TPPOAuth2Security:
            - openid
            - payments
components:
  headers:
    Location:
      description: "URI location to the created resource"
      required: true
      schema:
        type: "string"
        maxLength: 40
    Preference-Applied:
      description: |
        Determines that the requested Preference was applied by the API
        * Request to Pay: CancelAllPendingRequestsToPay=true - Confirms that all Requests to Pay in a Pending Status were successfully Cancelled.
      required: false
      schema:
        type: "string"
        maxLength: 40
      example: CancelAllPendingRequestsToPay=true
    x-fapi-interaction-id:
      required: true
      description: "An RFC4122 UID used as a correlation id."
      schema:
        type: "string"
      example: 49df2c2c-6b80-40ee-96a1-71910a248048
    x-idempotency-key-consent:
      description: "Ensures the LFI processes the resource successfully only once per x-idempotency-key"
      schema:
        type: "string"
        maxLength: 40
        pattern: "^(\\S*)$"
      example: 78dae4513b8847f98e2d4173b4ed0eb6

  ############################################
  # RESPONSES
  ############################################
  responses:
    TPPWebhookResponse:
      description: "Response Status Code"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    403Error:
      description: "Forbidden"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEErrorResponseSigned"
          examples:
            Forbidden:
              $ref: "#/components/examples/Error403ForbiddenSigned"
    404Error:
      description: "Not found"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    405Error:
      description: "Method Not Allowed"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    406Error:
      description: "Not Acceptable"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    415Error:
      description: "Unsupported Media Type"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    429Error:
      description: "Too Many Requests"
      headers:
        Retry-After:
          description: "Number in seconds to wait"
          schema:
            type: "integer"
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    500Error:
      description: "Internal Server Error"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEErrorResponseSigned"
          examples:
            Internal Server Error:
              $ref: "#/components/examples/Error500InternalServerErrorSigned"
    401Error:
      description: "Unauthorized"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    400Error:
      description: "Bad request"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEErrorResponseSigned"
          examples:
            Bad Request:
              $ref: "#/components/examples/Error400BadRequestSigned"
    200PaymentConsentRetrieve:
      description: "Payment Consent Retrieve"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEPaymentConsentResponseSigned"
    200PaymentConsentRefundRetrieve:
      description: "Payment Consent Retrieve"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEPaymentConsentRefundResponseSigned"
    200BaseConsentIdConsentsRetrieve:
      description: "Retrieve Payment Consents by BaseConsentId"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEPaymentConsentsByBaseConsentIdResponseSigned"
    201PaymentId:
      description: "Payment Id"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
        x-idempotency-key:
          $ref: "#/components/headers/x-idempotency-key-consent"
        Location:
          $ref: "#/components/headers/Location"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEPaymentIdResponseSigned"
    201FilePaymentId:
      description: "File Payment Id"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
        x-idempotency-key:
          $ref: "#/components/headers/x-idempotency-key-consent"
        Location:
          $ref: "#/components/headers/Location"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEFilePaymentIdResponseSigned"
    200PaymentId:
      description: "Payment Id"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEPaymentIdResponseSigned"
    200FilePaymentId:
      description: "File Payment Id"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
      content:
        application/jwt:
          schema:
            $ref: "#/components/schemas/AEFilePaymentIdResponseSigned"
    204NoContent:
      description: "No Content"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    204NoContentHead:
      description: "No Content"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
        Location:
          $ref: "#/components/headers/Location"
    204NoContentConsent:
      description: "No Content"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
        Preference-Applied:
          $ref: "#/components/headers/Preference-Applied"
    200NoContent:
      description: "200 OK No Content"
      headers:
        x-fapi-interaction-id:
          $ref: "#/components/headers/x-fapi-interaction-id"
    200FilePaymentsFilePaymentIdReportFile:
      description: "File Payments Read"
      headers:
        x-fapi-interaction-id:
          description: "An RFC4122 UID used as a correlation id."
          required: true
          schema:
            type: "string"
      content:
        '*/*':
          schema:
            type: string
            description: Any content type.
  ############################################
  # SCHEMAS
  ############################################
  schemas:
    AEJwt:
      description: |
        [https://www.rfc-editor.org/rfc/rfc7519](https://www.rfc-editor.org/rfc/rfc7519)
      type: "object"
      properties:
        iss:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.1)
          type: string
        exp:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4)
          type: number
        nbf:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.5)
          type: number
        aud:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3)
          type: array
          items:
            type: string
        iat:
          description: |
            [https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6](https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6)
          type: number
      required: [iss, exp, nbf]
    AEPaymentConsentResponseSigned:
      description: |
        Payment Consent Response Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEPaymentConsentResponse"
          required: [message]
    AEPaymentConsentRefundResponseSigned:
      description: |
        Payment Consent Response Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEPaymentConsentRefundResponse"
          required: [message]
    AEPaymentConsentsByBaseConsentIdResponseSigned:
      description: |
        Payment Consents By BaseConsentId Response Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              type: "array"
              items:
                $ref: "#/components/schemas/AEPaymentConsentResponse"
          required: [message]
    AEPaymentIdResponseSigned:
      description: |
        Payment Response Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEPaymentIdResponse"
          required: [message]
    AEFilePaymentIdResponseSigned:
      description: |
        Payment Response Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEFilePaymentIdResponse"
          required: [message]
    AEPaymentRequestSigned:
      description: |
        Payment Request Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEPaymentRequest"
          required: [message]
    AEFilePaymentRequestSigned:
      description: |
        Payment Request Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEFilePaymentRequest"
          required: [message]
    AEErrorResponseSigned:
      description: |
        Error Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEErrorResponse"
          required: [message]
    AEWebhookEventSigned:
      description: |
        Webhook Event Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
              $ref: "#/components/schemas/AEWebhookEvent"
          required: [message]
    AEEventNotification:
      type: "object"
      description: |
        A Webhook Subscription Schema
      required:
        - "Webhook"
      properties:
        Webhook:
          description: |
            A Webhook Schema
          type: "object"
          properties:
            Url:
              description: |
                The TPP Callback URL being registered with the LFI
              type: "string"
              example: "https://api.tpp.com/webhook/callbackUrl"
            IsActive:
              description: |
                The TPP specifying whether the LFI should send (IsActive true) or not send (IsActive false) Webhook Notifications to the TPP's Webhook URL
              type: "boolean"
              example: false
          additionalProperties: false
      additionalProperties: false
    AEWebhookEvent:
      type: "object"
      description: "Webhook Event"
      required:
        - "Data"
        - "EventMeta"
      properties:
        Data:
          type: "object"
          description: "Event Data. This Data Object will contain the same API resource and Schema that has triggered the Event."
        Links:
          $ref: "#/components/schemas/AELinksSelf"
        EventMeta:
          type: "object"
          description: "Event Metadata"
          required:
            - "EventDateTime"
            - "EventResource"
            - "EventType"
            - "ConsentId"
          properties:
            EventDateTime:
              type: "string"
              format: "date-time"
              description: "Date Time of the first Event in the Message"
            EventResource:
              type: "string"
              description: "The API resource to which the Event itself is associated"
              example: ""
            EventType:
              type: "string"
              enum:
                [
                  "UAEOF.Resource.Created",
                  "UAEOF.Resource.Updated",
                  "UAEOF.Resource.Deleted",
                ]
              description: "The Type of Event"
            ConsentId:
              description: "Unique identification as assigned to identify the consents resource."
              type: "string"
              minLength: 1
              maxLength: 128
          additionalProperties: false
      additionalProperties: false
    AESingleInstantPayment:
      type: "object"
      description: |
        A single immediate payment consent that MUST be be used for a single payment which will be initiated immediately after User authorization at the LFI.
      required:
        - "Type"
        - "Amount"
      properties:
        Type:
          type: "string"
          description: "The Payment Type"
          enum:
            - UAEOF.SingleInstantPayment
        Amount:
          $ref: "#/components/schemas/AEActiveCurrencyAmount"
        ExpectedInitiationTimeWindow:
          $ref: "#/components/schemas/AEExpectedInitiationTimeWindow"
      additionalProperties: false
    AESingleFutureDatedPayment:
      type: "object"
      description: |
        A long-lived consent that MUST be used for a single payment which will be authorized by the User during the payment journey, but the payment will be initiated by the TPP in the future.
      required:
        - "Type"
        - "Amount"
        - "RequestedExecutionDate"
      properties:
        Type:
          type: "string"
          description: "The Payment Type"
          enum:
            - UAEOF.SingleFutureDatedPayment
        Amount:
          $ref: "#/components/schemas/AEActiveCurrencyAmount"
        RequestedExecutionDate:
          $ref: "#/components/schemas/AERequestedExecutionDate"
      additionalProperties: false
    AELongLivedPaymentConsent:
      type: "object"
      description: |
        A long-lived payment consent.
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveCurrencyAmount"
        MaximumIndividualPaymentAmount:
          $ref: "#/components/schemas/AEMaximumIndividualPaymentAmount"
        MaximumCumulativeValueOfPayments:
          $ref: "#/components/schemas/AEMaximumCumulativeValueOfPayments"
        MaximumCumulativeNumberOfPayments:
          $ref: "#/components/schemas/AEMaximumCumulativeNumberOfPayments"
        PeriodicSchedule:
          description: |
            The definition for a schedule
          oneOf:
            - $ref: "#/components/schemas/AEDefinedSchedule"
            - $ref: "#/components/schemas/AEFixedPeriodicSchedule"
            - $ref: "#/components/schemas/AEVariablePeriodicSchedule"
          discriminator:
            propertyName: Type
      additionalProperties: false
    AEFilePaymentConsent:
      type: "object"
      description: |
        A file based payment consent.
      required:
        - "FileType"
        - "FileHash"
        - "NumberOfTransactions"
        - "ControlSum"
      properties:
        FileType:
          $ref: "#/components/schemas/AEFileType"
        FileHash:
          $ref: "#/components/schemas/AEFileHash"
        FileReference:
          $ref: "#/components/schemas/AEReference"
        NumberOfTransactions:
          $ref: "#/components/schemas/AEFileNumberOfTransactions"
        ControlSum:
          $ref: "#/components/schemas/AEControlSum"
        RequestedExecutionDateTime:
          $ref: "#/components/schemas/AERequestedExecutionDate"
      additionalProperties: false
    AEMaximumCumulativeValueOfPayments:
      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.
      type: "object"
      required:
        - "Amount"
        - "Currency"
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveOrHistoricAmount"
        Currency:
          $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
    AEMaximumCumulativeNumberOfPayments:
      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.
    AEPeriodTypeMaximumCumulativeValueOfPayments:
      description: |
        The maximum cumulative payment value of all payment initiations per Period Type.
      type: "object"
      required:
        - "Amount"
        - "Currency"
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveOrHistoricAmount"
        Currency:
          $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
    AEPeriodTypeMaximumCumulativeNumberOfPayments:
      type: "integer"
      description: |
        The maximum frequency of payment initiations per Period Type.
    AEMaximumIndividualPaymentAmount:
      description: |
        This is the Maximum amount a variable payment related to the Consent can take. 
        All payment amounts must be smaller or equal to this value.
      type: "object"
      required:
        - "Amount"
        - "Currency"
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveOrHistoricAmount"
        Currency:
          $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
    AEPeriodType:
      type: "string"
      description: |
        A Period may begin from the Consent CreationDateTime if a PeriodStartDate is not provided.

        |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.|
      enum:
        - UAEOF.Day
        - UAEOF.Week
        - UAEOF.Month
        - UAEOF.Year
    AEPeriodStartDate:
      type: "string"
      description: |
        * Payments: Specifies the start date of when a payment schedule begins.

        Where this is an optional field, if a value is not provided, then it must default to the Consent CreationDateTime, starting from midnight 00:00:00.
      format: "date"
    AEVariablePeriodicSchedule:
      description: |
        Payment Controls that apply to all payment instructions in a given period under this payment consent.
      type: "object"
      additionalProperties: false
      required:
        - "PeriodType"
        - "Type"
      properties:
        Type:
          type: "string"
          description: "The Periodic Schedule Type"
          enum:
            - UAEOF.VariablePeriodicSchedule
        PeriodType:
          $ref: "#/components/schemas/AEPeriodType"
        PeriodStartDate:
          $ref: "#/components/schemas/AEPeriodStartDate"
        MaximumCumulativeValueOfPaymentsPerPeriodType:
          $ref: "#/components/schemas/AEPeriodTypeMaximumCumulativeValueOfPayments"
        MaximumCumulativeNumberOfPaymentsPerPeriodType:
          $ref: "#/components/schemas/AEPeriodTypeMaximumCumulativeNumberOfPayments"
    AEFixedPeriodicSchedule:
      description: |
        Payment Controls that apply to all payment instructions in a given period under this payment consent.
      type: "object"
      additionalProperties: false
      required:
        - "PeriodType"
        - "PeriodStartDate"
        - "Amount"
        - "Type"
      properties:
        Type:
          type: "string"
          description: "The Periodic Schedule Type"
          enum:
            - UAEOF.FixedPeriodicSchedule
        PeriodType:
          $ref: "#/components/schemas/AEPeriodType"
        PeriodStartDate:
          $ref: "#/components/schemas/AEPeriodStartDate"
        Amount:
          $ref: "#/components/schemas/AEActiveCurrencyAmount"
    AEDefinedSchedule:
      type: "object"
      description: |
        Payment Schedule denoting a list of pre-defined future dated payments all with fixed amounts and dates.
      additionalProperties: false
      required:
        - "Schedule"
        - "Type"
      properties:
        Type:
          type: "string"
          description: "The Periodic Schedule Type"
          enum:
            - UAEOF.DefinedSchedule
        Schedule:
          type: "array"
          minItems: 1
          uniqueItems: false
          items:
            type: "object"
            additionalProperties: false
            required:
              - "PaymentExecutionDate"
              - "Amount"
            properties:
              PaymentExecutionDate:
                $ref: "#/components/schemas/AEPaymentExecutionDate"
              Amount:
                $ref: "#/components/schemas/AEActiveCurrencyAmount"
    AEPaymentSequenceNumber:
      type: "string"
      description: |
        This indicates the underlying sequence of the recurring payment that is being instructed. 
        For example:
        * 1 can represent the first payment instruction
        * 12 can represent the twelfth payment instruction
      minLength: 1
      maxLength: 10
      pattern: "^[1-9]\\d*$"
    AEErrorResponse:
      description: "An array of detail error codes, and messages, and URLs to documentation to help remediation."
      type: "object"
      properties:
        Errors:
          items:
            $ref: "#/components/schemas/AEError"
          type: "array"
          minItems: 1
      required:
        - "Errors"
      additionalProperties: false
    AEMessage:
      description: "A description of the error that occurred. e.g., 'A mandatory field isn't supplied' or 'RequestedExecutionDateTime must be in future'\nUAEOF doesn't standardise this field"
      type: "object"
      required:
        - "en"
      properties:
        en:
          type: "string"
          description: "English value of the string"
          minLength: 1
          maxLength: 500
        ar:
          type: "string"
          description: "Arabic value of the string"
          minLength: 1
          maxLength: 500
      additionalProperties: false
    AEError:
      description: "Error"
      type: "object"
      required:
        - "Code"
        - "Message"
      additionalProperties: false
      minProperties: 1
      properties:
        Code:
          description: "Low level textual error code"
          type: "string"
          enum:
            - "UAEOF.AccessToken.Unauthorized"
            - "UAEOF.AccessToken.InvalidScope"
            - "UAEOF.Consent.TransientAccountAccessFailure"
            - "UAEOF.Consent.AccountTemporarilyBlocked"
            - "UAEOF.Consent.PermanentAccountAccessFailure"
            - "UAEOF.Consent.Invalid"
            - "UAEOF.Consent.BusinessRuleViolation"
            - "UAEOF.Consent.FailsControlParameters"
            - "UAEOF.Consent.InvalidUserIdentifier"
            - "UAEOF.JWS.InvalidSignature"
            - "UAEOF.JWS.Malformed"
            - "UAEOF.JWS.InvalidClaim"
            - "UAEOF.JWS.InvalidHeader"
            - "UAEOF.JWE.DecryptionError"
            - "UAEOF.JWE.InvalidHeader"
            - "UAEOF.GenericRecoverableError"
            - "UAEOF.GenericError"
            - "UAEOF.Event.UnexpectedEvent"
            - "UAEOF.Body.InvalidFormat"
            - "UAEOF.Resource.InvalidResourceId"
            - "UAEOF.Resource.InvalidFormat"
        Message:
          $ref: "#/components/schemas/AEMessage"
        Path:
          description: "Recommended but optional reference to the JSON Path of the field with error, e.g., Data.Initiation.InstructedAmount.Currency"
          type: "string"
          minLength: 1
          maxLength: 500
        Url:
          description: "URL to help remediate the problem, or provide more information, or to API Reference, or help etc"
          type: "string"
    AELinksSelf:
      type: "object"
      description: "Links relevant to the resource"
      required:
        - "Self"
      properties:
        Self:
          $ref: "#/components/schemas/AESelf"
      additionalProperties: false
    AELinksRelatedConsent:
      type: "object"
      description: "Links relevant to the resource"
      required:
        - "Self"
        - "Related"
      properties:
        Self:
          $ref: "#/components/schemas/AERelatedSinglePayment"
        Related:
          $ref: "#/components/schemas/AESelfConsent"
      additionalProperties: false
    AELinksRelatedPayment:
      type: "object"
      description: "Links relevant to the resource"
      required:
        - "Self"
        - "Related"
      properties:
        Self:
          $ref: "#/components/schemas/AESelfConsent"
        Related:
          $ref: "#/components/schemas/AERelatedPayment"
      additionalProperties: false
    AEPaymentConsumption:
      type: "object"
      description: |
        Data to track the consumption of Payments in relation to an authorized Consent Schedule
      required:
        - "CumulativeNumberOfPayments"
        - "CumulativeValueOfPayments"
        - "CumulativeValueOfPaymentsPerCurrentPeriod"
      properties:
        CumulativeNumberOfPayments:
          type: "number"
          description: |
            The cumulative number of payment instructions successfully accepted under the current consent schedule (Settlement on the Creditor's account has been completed)
          minLength: 1
          example: 4
        CumulativeValueOfPayments:
          description: |
            The cumulative value of payment instructions successfully accepted under the current consent schedule (Settlement on the Creditor's account has been completed)
            A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217."
          type: "object"
          required:
            - "Amount"
            - "Currency"
          properties:
            Amount:
              $ref: "#/components/schemas/AEActiveOrHistoricAmount"
            Currency:
              $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
        CumulativeNumberOfPaymentsPerCurrentPeriod:
          type: "number"
          description: |
            The cumulative number of payment instructions in the current period that are successfully accepted (Settlement on the Creditor's account has been completed)
          minLength: 1
          example: 1
        CumulativeValueOfPaymentsPerCurrentPeriod:
          description: |
            The cumulative value of payment instructions in the current period that are successfully accepted (Settlement on the Creditor's account has been completed)
            A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217."
          type: "object"
          required:
            - "Amount"
            - "Currency"
          properties:
            Amount:
              $ref: "#/components/schemas/AEActiveOrHistoricAmount"
            Currency:
              $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
      additionalProperties: false
    AEMeta:
      type: "object"
      description: "Meta Data relevant to the resource"
      additionalProperties: false
    AEMetaMultiAuthorization:
      type: "object"
      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.
      properties:
        MultipleAuthorizers:
          type: "object"
          description: "Multiple Authorizers Schema"
          properties:
            TotalRequired:
              description: |
                The total number of Authorizers required to process the request
              type: "number"
            Authorizations:
              type: "array"
              items:
                description: |
                  Authorizer
                type: "object"
                properties:
                  AuthorizerId:
                    description: |
                      The Authorizer's Identifier
                    type: "string"
                  AuthorizerType:
                    description: |
                      The Type of Authorizer. For example, Financial, Management, etc.
                    type: "string"
                  AuthorizationDate:
                    description: |
                      The DateTime of when the Authorization occurred. All dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2023-04-05T10:43:07+00:00
                    type: "string"
                    format: "date-time"
                  AuthorizationStatus:
                    description: |
                      The Status reflecting the Authorizer's final decision regarding the request
                    type: "string"
                    enum:
                      - "Pending"
                      - "Approved"
                      - "Rejected"
                additionalProperties: false
          additionalProperties: false
      additionalProperties: false
    AESelf:
      description: "A link to the current resource"
      type: "string"
      format: "uri"
    AESelfConsent:
      description: "A link to the related payment consents resource"
      type: "string"
      format: "uri"
      example: "https://api.lfi.sa/open-banking/payment/2023.11.01-final/payment-consents/aac-69255d98-ab0e-4758-92a7-cacbf3073efa"
    AERelatedSinglePayment:
      type: string
      format: "uri"
      description: "A link to the current payment resource"
      example: "https://api.lfi.sa/open-banking/payment/2023.11.01-final/payments/83b47199-90c2-4c05-9ef1-aeae68b0fc7c"
    AERelatedPayment:
      description: |
        A link to the related payments resource. 

        * For a Single Payment, this Array must have 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
      type: "array"
      items:
        type: "string"
      example: []
    AEPaymentId:
      description: "An API specific unique identification as assigned by the LFI to identify the domestic Payment resource."
      type: "string"
      minLength: 1
      maxLength: 40
      example: 83b47199-90c2-4c05-9ef1-aeae68b0fc7c
    AEConsentId:
      description: |
        Unique identification assigned by the TPP to identify the consent resource.
      type: "string"
      minLength: 1
      maxLength: 128
      example: aac-69255d98-ab0e-4758-92a7-cacbf3073efa
    AEBaseConsentId:
      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.
      type: "string"
      minLength: 1
      maxLength: 128
      example: abc-19877d98-ab0e-4758-92a7-vvffr1234abv
    AECreationDateTime:
      description: "Date and time at which the message was created. All dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2023-04-05T10:43:07+00:00"
      type: "string"
      format: "date-time"
    AEPaymentStatus:
      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 Debtors account has been completed
        * AcceptedCreditSettlementCompleted: When the Payee 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 Payee account yet.
      type: "string"
      enum:
        - "Pending"
        - "AcceptedSettlementCompleted"
        - "AcceptedCreditSettlementCompleted"
        - "AcceptedWithoutPosting"
        - "Rejected"
      example: Pending
    AEFilePaymentStatus:
      description: |
        Specifies the status of the payment information group
        * Received: The file payment has been received.
        * Rejected: The file payment has been rejected.
      type: "string"
      enum:
        - "Received"
        - "Rejected"
      example: Received
    AEStatusUpdateDateTime:
      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. \nAll date-time fields in responses must include the timezone. An example is below:\n2023-04-05T10:43:07+00:00"
      type: "string"
      format: "date-time"
    AERequestedExecutionDate:
      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.
      type: "string"
      format: "date"
    AEConsentStatus:
      description: |
        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.|
      type: "string"
      enum:
        - "AwaitingAuthorization"
        - "Authorized"
        - "Rejected"
        - "Revoked"
        - "Expired"
        - "Consumed"
        - "Suspended"
    AEPatchConsentStatus:
      description: |
        Specifies the authorization statuses of a consent.

        | Consent Status| State Type| Description|
        |---------------|-----------|------|
        | Revoked | Terminal | The consent has been revoked at the TPP.|
        | Suspended | In Use | The consent has been suspended by the TPP.|
        | Authorized | In Use | The consent has been successfully re-authorized by the TPP.|
      type: "string"
      enum:
        - "Revoked"
        - "Suspended"
        - "Authorized"
    AEAcceptedAuthorizationTypeRequestPaymentsIsSingleAuthorization:
      description: |
        Specifies to the LFI that the type of consent authorization accepted by the TPP when staging the consentmust be completed in a single authorization Step 
        with *the SingleLFI
- The consent should incur a single authorization Step with the LFI
type: "boolean"
    AuthorizationExpirationDateTime:
      type: *string
Multi - The consent should incur aformat: multidate-authorizationtime
 Step with the LFI  description: |
     * Both - TheA consenttime shouldwindow incurby eitherwhich a singleConsent authorization(in or multi-authorization step with the LFI. The LFI decidesAwaitingAuthorization status) must be Authorized by the User.
      type: "string" The time window starts from the enum:actual CreationDateTime (when the Consent is staged with  - "UAEOF.Single"the LFI). 
       - "UAEOF.Multi"If the current time window exceeds the Authorization Expiration - "UAEOF.Both"
    AEAcceptedAuthorizationType:
      description: |
 Time Window (and the Consent status is AwaitingAuthorization) then the Consent Status must be set to Rejected.
      Specifies to theThe LFItime thewindow typeis ofbased consenton authorizationa acceptedcustom bytime the TPP when staging the consent
        * Single - The consent should incur a single authorization Step with the LFI
        * Multi - The consent should incur a multi-authorization Step with the LFI
      type: "string"
      enum:
        - "UAEOF.Single"
        - "UAEOF.Multi"
    AEAuthorizationExpirationTimeWindowformat hhh:mm:ss. e.g. 720:00:00 represents a time window of 720 hours, 00 minutes, 00 seconds (30 days) after the CreationDateTime to Authorize the Consent.
    AEExpectedInitiationTimeWindow:
      description: |
        A time window set by whichthe aTPP Consentin (inwhich AwaitingAuthorizationa status)Payment must be Authorizedinitated by the UserLFI.
        The time window startsis frombased theon actuala CreationDateTimecustom (whentime the Consent is staged with the LFI). 
        If the current format hhh:mm:ss. e.g. 000:00:15 represents a time window exceedsof the15 Authorizationseconds Expiration Time Window (andto initiate the ConsentPayment.
status is AwaitingAuthorization) then the Consent Status must be set to Rejected.
        The time window is based on a custom time format hhh:mm:ss. e.g. 720:00:00 represents a time window of 720 hours, 00 minutes, 00 seconds (30 days) after the CreationDateTime to Authorize the Consent.
      type: "string"
      type: "string"
      pattern: "^(00[0-9]|0[1-9][0-9]|[1-6][0-9]{2}|7[01][0-9]|720):[0-5][0-9]:[0-5][0-9]$"
      example: "720000:00:0015"
    AEExpectedInitiationTimeWindowAEPaymentRequest:
      description: |
        A time window set by the TPP in which a Payment must be initated by the LFI.
 Payment Request Schema
      type: "object"
      additionalProperties: false
      required:
      The time window- is"Data"
based on a custom time format hhh:mmproperties:ss.
e.g. 000:00:15 represents a time window of 15 secondsData:
to initiate the Payment.       type: "string"object"
          additionalProperties: false
      pattern: "^(00[0-9]|0[1-9][0-9]|[1-6][0-9]{2}|7[01][0-9]|720):[0-5][0-9]:[0-5][0-9]$    required:
            - "ConsentId"
      example: "000:00:15"      - "Instruction"
AEPaymentRequest:       description: |    - "PersonalIdentifiableInformation"
   Payment Request Schema       type:- "objectPaymentPurposeCode"
      additionalProperties: false       requiredproperties:
        - "Data"       propertiesConsentId:

       Data:           type$ref: "object#/components/schemas/AEConsentId"
          additionalProperties: false Instruction:
         required:             - "ConsentId$ref: "#/components/schemas/AEPaymentInstruction"
            -CurrencyRequest:
"Instruction"             - "PersonalIdentifiableInformation"
            - "PaymentPurposeCode $ref: "#/components/schemas/AECurrencyRequest"
          properties:             ConsentIdPersonalIdentifiableInformation:
              $ref: "#/components/schemas/AEConsentIdAEJWEPaymentPII"
            InstructionPaymentPurposeCode:
              $ref: "#/components/schemas/AEPaymentInstructionAEPaymentPurposeCode"
            CurrencyRequestDebtorReference:
              $ref: "#/components/schemas/AECurrencyRequestAEStructuredDebtorReference"
            PersonalIdentifiableInformationCreditorReference:
              $ref: "#/components/schemas/AEJWEPaymentPIIAEStructuredCreditorReference"
    AEFilePaymentRequest:
       PaymentPurposeCodedescription: |
             $ref: "#/components/schemas/AEPaymentPurposeCode"
            PayerReference:
              $ref: "#/components/schemas/AEReference"
    AEFilePaymentRequest:
      description: |
        File Payment Request Schema
      type: "object"
      additionalProperties: false
      required:
        - "Data"
      properties:
        Data:
          type: "object"
          additionalProperties: false
          required:
            - "ConsentId"
            - "PaymentPurposeCode"
          properties:
            ConsentId:
              $ref: "#/components/schemas/AEConsentId"
            Instruction:
              $ref: "#/components/schemas/AEFilePaymentConsent"
            PaymentPurposeCode:
              $ref: "#/components/schemas/AEPaymentPurposeCode"
            PayerReferenceDebtorReference:
              $ref: "#/components/schemas/AEReferenceAEStructuredDebtorReference" 
    AECreditorAgent:
      description: |
        Refers to the Financial Institution.
      type: "object"
      required:
        - "IdentificationTypeSchemeName"
        - "Identification"
      properties:
        IdentificationTypeSchemeName:
          type: "string"
          description: |
            Refers to the Identification scheme for uniquely identifying the Agent.

            * UAEOF.OTHEROther: The ID; A Country Code followed by a Bank Code (UAEOF 4 character code). The full list of LFI names and 6 digits IDs are as follows:
          enum:
            - "UAEOF.OTHEROther"
        Identification:
          description: |
            The Agent is the Country Code followed by a Bank Code"
          type: "string"
          minLength: 6
          maxLength: 6
        Name:
          description: "Name by which an agent is known and which is usually used to identify that agent."
          type: "string"
          minLength: 1
          maxLength: 140
        PostalAddress:
          $ref: "#/components/schemas/AEAddress"
    AEPaymentConsentResponse:
      description: |
        Payment Consent Response Schema
      type: "object"
      additionalProperties: false
      required:
        - "Data"
        - "Links"
      properties:
        Data:
          type: "object"
          additionalProperties: false
          required:
            - "ConsentId"
            - "BaseConsentId"
            - "Status"
            - "StatusUpdateDateTime"
            - "CreationDateTime"
            - "ControlParameters"
            - "PaymentPurposeCode"
            - "PaymentConsumption"
            - "AcceptedAuthorizationType"
            - "ExpirationDateTime"
          properties:
            ConsentId:
              $ref: "#/components/schemas/AEConsentId"
            BaseConsentId:
              $ref: "#/components/schemas/AEBaseConsentId"
            AcceptedAuthorizationTypeIsSingleAuthorization:
              $ref: "#/components/schemas/AEAcceptedAuthorizationTypeIsSingleAuthorization"
            AuthorizationExpirationTimeWindowAuthorizationExpirationDateTime:
              $ref: "#/components/schemas/AEAuthorizationExpirationTimeWindowAuthorizationExpirationDateTime"
            Permissions:
              $ref: "#/components/schemas/AEConsentPermissions"
            ReadRefundAccount:
              $ref: "#/components/schemas/AEReadRefundAccount"
            ExpirationDateTime:
              $ref: "#/components/schemas/AEConsentExpirationDateTime"
            Status:
              $ref: "#/components/schemas/AEConsentStatus"
            RevokedBy:
              $ref: "#/components/schemas/AERevokedBy"
            CreationDateTime:
              $ref: "#/components/schemas/AECreationDateTime"
            StatusUpdateDateTime:
              $ref: "#/components/schemas/AEStatusUpdateDateTime"
            Charges:
              $ref: "#/components/schemas/AECharges"
            ExchangeRate:
              $ref: "#/components/schemas/AEExchangeRateInformation"
            CurrencyRequest:
              $ref: "#/components/schemas/AECurrencyRequest"
            ControlParameters:
              description: |
                Control Parameters set the overall rules for the Payment Schedule
              type: "object"
              additionalProperties: false
              properties:
                IsPayByAccount:
                  $ref: "#/components/schemas/AEIsPayByAccount"
                ConsentSchedule:
                  type: "object"
                  description: |
                    The various payment types that can be initiated:
                    * A Single Payment
                    * A Multi-Payment
                    * A Combined Payment (one SinglePayment and one MultiPayment)
                  properties:
                    SinglePayment:
                      description: |
                        A Consent definition for defining Single Payments
                      oneOf:
                        - $ref: "#/components/schemas/AESingleInstantPayment"
                        - $ref: "#/components/schemas/AESingleFutureDatedPayment"
                      discriminator:
                        propertyName: Type
                    MultiPayment:
                      description: |
                        A Consent definition for defining Multi Payments
                      $ref: "#/components/schemas/AELongLivedPaymentConsent"
                    FilePayment:
                      description: |
                        A Consent definition for defining Multi Payments
                      $ref: "#/components/schemas/AEFilePaymentConsent"
                  additionalProperties: false
            PayerReferenceDebtorReference:
              description$ref: |"#/components/schemas/AEStructuredDebtorReference"
            CreditorReference:
   Reason or reference for the payer regarding the Payment
              $ref: "#/components/schemas/AEReferenceAEStructuredCreditorReference"
            BeneficiaryReferencePaymentPurposeCode:
              description$ref: |"#/components/schemas/AEPaymentPurposeCode"
                Reason or reference for the beneficiary regarding the PaymentSponsoredTPPInformation:
              $ref: "#/components/schemas/AEReferenceAESponsoredTPPInformation"
            PaymentPurposeCodePaymentConsumption:
              $ref: "#/components/schemas/AEPaymentPurposeCodeAEPaymentConsumption"
            SponsoredTPPInformationSubscription:
              $ref: "#/components/schemas/AESponsoredTPPInformationAEEventNotification"
            PaymentConsumptionLinks:
              $ref: "$ref: "#/components/schemas/AEPaymentConsumption"
        Subscription:
          $ref: "#/components/schemas/AEEventNotification"
        Links:
          $ref: "#/components/schemas/AELinksRelatedPayment"
        Meta:
          $ref: "#/components/schemas/AEMetaMultiAuthorization"
    AEPaymentConsentRefundResponse:
      description: |
        Payment Consent Refund Response Schema
      type: "object"
      additionalProperties: false
      required:
        - "Data"
        - "Links"
      properties:
        Data:
          type: "object"
          additionalProperties: false
          required:
            - "ConsentId"
            - "BaseConsentId"
            - "RefundAccount"
          properties:
            ConsentId:
              $ref: "#/components/schemas/AEConsentId"
            BaseConsentId:
              $ref: "#/components/schemas/AEBaseConsentId"
            RefundAccount:
              $ref: "#/components/schemas/AEDebtorAccount"
        Links:
          $ref: "#/components/schemas/AELinksRelatedPayment"
    AEPaymentIdResponse:
      description: |
        Payment Id Response Schema
      type: "object"
      additionalProperties: false
      required:
        - "Data"
        - "Links"
      properties:
        Data:
          type: "object"
          additionalProperties: false
          required:
            - "PaymentId"
            - "ConsentId"
            - "Status"
            - "StatusUpdateDateTime"
            - "Instruction"
            - "CreationDateTime"
            - "PaymentPurposeCode"
            - "Charges"
            - "PaymentTransactionId"
          properties:
            PaymentId:
              $ref: "#/components/schemas/AEPaymentId"
            ConsentId:
              $ref: "#/components/schemas/AEConsentId"
            PaymentTransactionId:
              $ref: "#/components/schemas/AEPaymentTransactionId"
            Status:
              $ref: "#/components/schemas/AEPaymentStatus"
            StatusUpdateDateTime:
              $ref: "#/components/schemas/AEStatusUpdateDateTime"
            CreationDateTime:
              $ref: "#/components/schemas/AECreationDateTime"
            Charges:
              $ref: "#/components/schemas/AECharges"
            ExchangeRate:
              $ref: "#/components/schemas/AEExchangeRateInformation"
            CurrencyRequest:
              $ref: "#/components/schemas/AECurrencyRequest"
            Instruction:
              $ref: "#/components/schemas/AEPaymentInstruction"
            PaymentPurposeCode:
              $ref: "#/components/schemas/AEPaymentPurposeCode"
            PayerReferenceDebtorReference:
              $ref: "#/components/schemas/AEReferenceAEStructuredDebtorReference"
        Links:
          $ref: "#/components/schemas/AELinksRelatedConsent"
        Meta:
          $ref: "#/components/schemas/AEMeta"
    AEFilePaymentIdResponse:
      description: |
        Payment Id Response Schema
      type: "object"
      additionalProperties: false
      required:
        - "Data"
        - "Links"
      properties:
        Data:
          type: "object"
          additionalProperties: false
          required:
            - "PaymentId"
            - "ConsentId"
            - "Status"
            - "StatusUpdateDateTime"
            - "CreationDateTime"
            - "Instruction"
            - "PaymentPurposeCode"
          properties:
            PaymentId:
              $ref: "#/components/schemas/AEPaymentId"
            ConsentId:
              $ref: "#/components/schemas/AEConsentId"
            Status:
              $ref: "#/components/schemas/AEPaymentStatusAEFilePaymentStatus"
            StatusUpdateDateTime:
              $ref: "#/components/schemas/AEStatusUpdateDateTime"
            CreationDateTime:
              $ref: "#/components/schemas/AECreationDateTime"
            Charges:
              $ref: "#/components/schemas/AECharges"
            Instruction:
              $ref: "#/components/schemas/AEFilePaymentConsent"
            PaymentPurposeCode:
              $ref: "#/components/schemas/AEPaymentPurposeCode"
        Links:
          $ref: "#/components/schemas/AELinksRelatedConsent"
        Meta:
          $ref: "#/components/schemas/AEMeta"
    AEPaymentInstruction:
      type: "object"
      additionalProperties: false
      required:
        - "Amount"
        - "PaymentSequenceNumber"
      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."
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveCurrencyAmount"
        BeneficiaryReference:
 
        description: |
            Reason or reference for the beneficiary regarding the Payment
          $ref: "#/components/schemas/AEReference"
        PaymentSequenceNumber:
          $ref: "#/components/schemas/AEPaymentSequenceNumber"
    AEPaymentExecutionDate:
      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
      type: "string"
      format: "date"
    AEActiveCurrencyAmount:
      description: |
        The Currency and Amount relating to the Payment, Refund or Request to Pay
      type: "object"
      required:
        - "Amount"
        - "Currency"
      properties:
        Amount:
          $ref: "#/components/schemas/AEActiveOrHistoricAmount"
        Currency:
          $ref: "#/components/schemas/AEActiveOrHistoricCurrencyCode"
    AEActiveOrHistoricAmount:
      description: "A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217."
      type: "string"
      pattern: "^\\d{1,16}\\.\\d{2}$"
      example: "100.00"
    AEActiveOrHistoricCurrencyCode:
      description: "A 3 character alphabetic code allocated to a currency under an international currency identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'."
      type: "string"
      pattern: "^[A-Z]{3,3}$"
      example: "AED"
    AEExternalAccountIdentificationCode:
      description: "Name of the identification scheme, in a coded form as published in an external list."
      type: "string"
      enum:
        - "UAEOF.IBAN"
        - "UAEOF.AccountNumber"
    AEIdentification:
      description: |
        Identification for the account assigned by the LFI based on the Account Scheme Name. 
        This identification is known by the User account owner.
      type: "string"
      minLength: 1
    AEMobileNumber:
      description: |
        Mobile number of the account owner.
   
  type: "string"       maxLength: 16
    AEName:
      type: "object"
      description: |
        The Account Holder Name is the name or names of the Account owner(s) represented at the account level
      properties:
        en:
          type: "string"
          description: "English value of the string"
          maxLength: 70
        ar:
          type: "string"
          description: "Arabic value of the string"
          maxLength: 70
      additionalProperties: false
    AETradingName:
      type: "object"
      description: |
        The Trading Brand Name (if applicable) for the Creditor. 
        Applicable to Payments.
      properties:
        en:
          type: "string"
          description: "English value of the string"
          maxLength: 70
        ar:
          type: "string"
          description: "Arabic value of the string"
          maxLength: 70
      additionalProperties: false
    AEReference:
      description: |
        A reason or reference in relation to a payment. 
      type: "string"
      minLength: 1
      maxLength: 120
    AEExternalPaymentChargeTypeCodeAEStructuredCreditorReference:
      description: "Charge|
 type, in a coded form."   A reason or reference type: "string"
      enum:
    in relation to a payment, set to facilitate a structured Creditor reference consisting of:

  - "VAT"     * TPP ID and -BIC "Fees"for the Debtor Account, followed AECharges:by freeform text to a maximum of type: "array"120 characters.

     items:   The TPP ID value will match type: "object"
        additionalProperties: false
  the organization ID value from the Trust Framework, and therefore will be a v4 UUID.

    description: |   A BIC is specific     Set of elements used according to providethe detailsstandard offormat a charge for theISO payment20022, initiation.and can therefore be either 8 or 11 characters   * For Payments, these Charges are on the Debtorin length.

       required: If the value of the concatenated string exceeds 120 characters, -the "ChargeBearer"TPP must first omit or truncate the freeform element of  - "Type"the reference.
          - "Amounttype: "string"
        propertiesminLength: 1
         ChargeBearermaxLength: 120
           $ref: "#/components/schemas/AEChargeBearerType1Code"
   pattern: "^TPP=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12},BIC=[A-Z0-9]{4}[A-Z0-9]{2}[A-Z0-9]{2}([A-Z0-9]{3}){0,1}($|,.+$)"
    AEStructuredDebtorReference:
      Typedescription: |
        A reason  $ref: "#/components/schemas/AEExternalPaymentChargeTypeCode"
          Amountor reference in relation to a payment, set to facilitate a structured Debtor reference consisting of:

        * For payments to $refMerchants: "#/components/schemas/AEActiveCurrencyAmount"
    AEPatchPaymentConsentSigned:
      description: |
        Payment Patch Consent Signed Schema
      allOf:
        - $ref: "#/components/schemas/AEJwt"
        - type: "object"
          properties:
            message:
TPP ID, Merchant ID, BIC and for the Creditor Account, followed by freeform text to a maximum of 120 characters.

        * For other payments: TPP ID and BIC for the Creditor Account, followed by freeform text to a maximum of 120 characters.

        The TPP ID value will match the organization ID value from the Trust Framework, and therefore will be a v4 UUID.

        The Merchant ID wil $ref: "#/components/schemas/AEPatchPaymentConsent"
          required: [message]
    AEPatchPaymentConsent:
 be as per the existing IPP rules for the Merchant identification, and will incorporate the Trade License number for the Merchant.

   description: "Patch Payment Consent"  A BIC is specific according type: "object"
      properties:
        Data:to the standard format for ISO 20022, and can therefore be either 8 or 11 characters in length.

        If type: "object"
          description: "Primary data for the resource"
   the value of the concatenated string exceeds 120 characters, the TPP must omit or truncate the freeform element of the reference.
      requiredoneOf:
            -- type: "Statusstring"
          propertiesminLength: 1
           StatusmaxLength: 120
             $ref: "#/components/schemas/AEPatchConsentStatus"
            RevokedBy:pattern: "^TPP=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12},Merchant=[A-Z0-9]{3}-[A-Z]{4}-TL.+-[0-9]{4},BIC=[A-Z0-9]{4}[A-Z0-9]{2}[A-Z0-9]{2}([A-Z0-9]{3}){0,1}($|,.+$)"
                $ref- type: "#/components/schemas/AERevokedByPatchConsentstring"
          additionalPropertiesminLength: false1
        Subscription:           $ref: "#/components/schemas/AEEventNotification"
maxLength: 120
   AERisk:       additionalProperties: false
      description: |
        The Risk section is sent by the TPP to the LFI. It is used to specify additional details for risk/fraud scoring regarding Payments.
      type: "object"
      properties:
        UserIndicators:
          $ref: "#/components/schemas/AEUserIndicators"
        DestinationDeliveryAddress:
          type: "object"
          description: |
            Destination Delivery Address
          properties:
            RecipientType:
              type: "string"
              description: "The recipient of the goods whether an individual or a corporation."
              enum:
                - "UAEOF.Individual"
                - "UAEOF.Corporate"
            RecipientName:
              type: "object"
              description: "The name of the recipient of the goods, whether an individual or a corporation."
              properties:
                en:
                  type: "string"
                  description: "English value of the string"
                ar:
                  type: "string"
                  description: "Arabic value of the string"
            NationalAddress:
              $ref: "#/components/schemas/AEAddress"
        TransactionIndicators:
          $ref: "#/components/schemas/AETransactionIndicators"
        BeneficiaryIndicators:
          $ref: "#/components/schemas/AEBeneficiaryIndicators"
    AERiskUserIndicators:
      description: |
        The Risk section is sent by the TPP to the LFI. It is used to specify additional details for risk/fraud scoring.
      type: "object"
      properties:
        UserIndicators:
          $ref: "#/components/schemas/AEUserIndicators"
        TransactionIndicators:
          $ref: "#/components/schemas/AETransactionIndicators"
    AEPaymentPurposeCode:
      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.
      type: "string"
      minLength: 1
      maxLength: 4
      pattern: "^[A-Z]{3}$"
    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 IPP transactions, this is the IPP generated TransactionId.

        This is not the same as the TransactionID in the Account Information Transactions API.
      minimum: 1
      maximum: 40
    AEBeneficiaryNote:
      type: "object"
      description: |
        Beneficiary Note may be populated by the User (i.e. payer) using information requested by the beneficiary or any other information the User wants to provide to the beneficiary to assist in identifying and reconciling the payment. 
        This information will be transferred via the payment rails to the beneficiary LFI, if different than the User’s LFI.
        Please refer to Generic Business Rules 4.2.8 Beneficiary-Note
      required:
        - "Notes"
      properties:
        Notes:
          description: |
            Notes regarding the payment for the Beneficiary.
          type: "string"
          minLength: 1
          maxLength: 256
      additionalProperties: false
    AEBeneficiaryOrderId:
      type: "object"
      description: |
        A reference generated by the merchant referencing the order related to the payment or another unique reference in the context of the merchant. 
        This information will be transferred via the payment rails to the beneficiary LFI.  
        Please refer to Business Rules 6.4 Order-ID
      required:
        - "OrderId"
      properties:
        OrderId:
          type: "string"
          minLength: 1
          maxLength: 256
          description: |
            A reference generated by the merchant referencing the order related to the payment or another unique reference in the context of the merchant. 
            This information will be transferred via the payment rails to the beneficiary LFI.pattern: "^TPP=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12},BIC=[A-Z0-9]{4}[A-Z0-9]{2}[A-Z0-9]{2}([A-Z0-9]{3}){0,1}($|,.+$)"
    AEExternalPaymentChargeTypeCode:
      description: "Charge type, in a coded form."
      type: "string"
      enum:
        - "VAT"
        - "Fees"
    AECharges:
      type: "array"
      items:
        type: "object"
        additionalProperties: false
 
  AESponsoredTPPInformation:       type: "object"
      description: |
        The Sponsored TPPSet is:of elements used to provide details of a charge *for Athe TPPpayment thatinitiation.
itself has no direct Open Banking API integrations.   * For Payments, these Charges are on *the ADebtor.
TPP that is using the integration of another TPPrequired:
that does have direct Open Banking API integrations.   - "ChargeBearer"
  properties:        - Name:"Type"
          type:- "stringAmount"
          minLengthproperties:
1          ChargeBearer:
maxLength: 50           description$ref: |"#/components/schemas/AEChargeBearerType1Code"
          Type:
 The Sponsored TPP Name         Identification:$ref: "#/components/schemas/AEExternalPaymentChargeTypeCode"
          typeAmount:
 "string"           minLength$ref: 1"#/components/schemas/AEActiveCurrencyAmount"
    AEPatchPaymentConsentSigned:
      maxLengthdescription: 50|
        Payment Patch description:Consent |Signed Schema
      allOf:
    The Sponsored TPP Identification - $ref: "#/components/schemas/AEJwt"
   additionalProperties: false    - AEIsPayByAccounttype: "object"
     type: boolean    properties:
  description: |         Amessage:
flag to denote if the Payment is an E-Commerce transaction       default$ref: false"#/components/schemas/AEPatchPaymentConsent"
    AECreditorAccount:       descriptionrequired: "Unambiguous[message]
identification of the account ofAEPatchPaymentConsent:
the creditor to which a credit entrydescription: will"Patch bePayment posted.Consent"
      type: "object"
      additionalPropertiesproperties:
 false       requiredData:
         - type: "IdentificationTypeobject"
        - "Identification" description: "Primary data for the resource"
  - "Name"       propertiesrequired:
        IdentificationType:           $ref: "#/components/schemas/AEExternalAccountIdentificationCode"
 - "Status"
      Identification:    properties:
      $ref: "#/components/schemas/AEIdentification"     Status:
   MobileNumber:           $ref: "#/components/schemas/AEMobileNumber"AEPatchConsentStatus"
            RevokedBy:
   Name:           $ref: "#/components/schemas/AENameAERevokedByPatchConsent"
         TradingName additionalProperties: false
         $ref: "#/components/schemas/AETradingName"Subscription:
    AEDebtorAccount:       description$ref: "Unambiguous identification of the account of the debtor to which a debit entry will be made."#/components/schemas/AEEventNotification"
    AERisk:
      additionalProperties: false
      description: |
type: "object"       required:The Risk section is sent by the TPP to - "IdentificationType"
        - "Identification"
 the LFI. It is used to specify additional details for risk/fraud scoring regarding Payments.
      -type: "Nameobject"
      properties:
        IdentificationTypeUserIndicators:
          $ref: "#/components/schemas/AEExternalAccountIdentificationCodeAEUserIndicators"
        IdentificationDestinationDeliveryAddress:
          $reftype: "#/components/schemas/AEIdentification"object"
          MobileNumber:description: |
            Destination Delivery Address
          $refproperties: "#/components/schemas/AEMobileNumber"
            NameRecipientType:
              $reftype: "#/components/schemas/AEName"string"
      AEMaximumIndividualRequestsToPayAmount:        description: |
   "The recipient of the goods whether an individual or a corporation."
    This is the Maximum amount a single request to pay amountenum:
related to the Consent can be.          All request- to"Individual"
pay amounts must be smaller or equal to this value.       type:- "stringCorporate"
      pattern: "^\\d{1,16}\\.\\d{2}$"     RecipientName:
 example: "100.00"     AEMaximumCumulativeNumberOfRequestsToPay:       type: "integerobject"
              description: |"The name of the recipient of the goods,  The maximum cumulative number of all succesful Request To Pays under the Consent.whether an individual or a corporation."
              properties:
     Every successful Request To Pay related to the Consent is added toen:
the total cumulative number of Request To Pay initiations of the Consent which cannot exceed the maximum value agreed with the User at the point of consent.type: "string"
           AEMaximumCumulativeValueOfRequestsToPay:       typedescription: "English value of the string"
      description: |         Thear:
maximum cumulative value of all successfully paid request to pay instructions under the Consent.     type: "string"
   Each successfully paid request to pay amount (related to the Consent) is added to the totaldescription: cumulative"Arabic value of the Consent which cannot exceed the maximum value agreed with the User at the point of consent. string"
            NationalAddress:
              pattern$ref: "^\\d{1,16}\\.\\d{2}$#/components/schemas/AEAddress"
      example: "100.00" TransactionIndicators:
   AEPeriodTypeMaximumCumulativeValueOfRequestsToPay:       type$ref: "string#/components/schemas/AETransactionIndicators"
      description  BeneficiaryIndicators:
|         The maximum cumulative request to pay value of all request to pay initiations per Period Type.$ref: "#/components/schemas/AEBeneficiaryIndicators"
    AERiskUserIndicators:
      description: |
      pattern: "^\\d{1,16}\\.\\d{2}$"
      example: "100.00"
    AERevokedBy:
      description: | The Risk section is sent by the TPP to the LFI. It is used to specify additional details for risk/fraud scoring.
      type: "object"
 Denotes the Identifier of the revocation.properties:
        UserIndicators:
| Identifier| Description|         |-----------|------------|$ref: "#/components/schemas/AEUserIndicators"
        |TransactionIndicators:
LFI | Revoked by LFI without User initiation|   $ref: "#/components/schemas/AETransactionIndicators"
    |AEPaymentPurposeCode:
TPP | Revoked by TPP without Userdescription: initiation| A category code that relates to the type |of LFI.InitiatedByUserservices |or Initiatedgoods bythat Usercorresponds viato the LFI|underlying purpose of the payment. The code must conform |to TPP.InitiatedByUserthe |published InitiatedAANI bypayment Userpurpose viacode thelist.
TPP|       type: "string"
      enumminLength: 1
      maxLength: -4
"UAEOF.LFI"         - "UAEOF.TPP"pattern: "^[A-Z]{3}$"
    AEPaymentTransactionId:
   - "UAEOF.LFI.InitiatedByUser"         - "UAEOF.TPP.InitiatedByUsertype: "string"
    AERevokedByPatchConsent:
      description: |
        DenotesThis theis Identifieran ofend theto revocation.end TransactionId that is generated by the underlying payment rails |when Identifier|it Description|is sent from an Originating LFI to a  |-----------|------------|Receiving LFI.
        |For TPPIPP |transactions, Revokedthis byis TPPthe withoutIPP Usergenerated initiation|TransactionId.

       | TPP.InitiatedByUser | Initiated by User via theThis TPP|is not the same as the TransactionID type: "string"
   in the Account Information Transactions API.
  enum:    minimum: 1
   - "UAEOF.TPP"  maximum: 40
    AEBeneficiaryOrderId:
- "UAEOF.TPP.InitiatedByUser"     AEConsentExpirationDateTimetype: "object"
      description: |
        SpecifiedA datereference andgenerated timeby the consentmerchant willreferencing expire.the order related to the payment or another unique Ifreference thisin isthe notcontext populated,of the consentmerchant. will
remain active as a long lived consent until theThis maximuminformation consentwill validitybe periodtransferred asvia perthe section 4.1.1 Consent Elements in the API User Guide.payment rails to the beneficiary LFI.  
        Please Allrefer datesto inBusiness theRules JSON payloads are represented in ISO 8601 date-time format.6.4 Order-ID
      required:
        All date-time fields in responses must include the timezone. An example is :2023-04-05T10:43:07+00:00- "OrderId"
      properties:
        OrderId:
    * For Payment Consents, the maximum expiration time limit should be 23:59:59 (1 second before 00:00:00)
      type: "string"type: "string"
          minLength: 1
          formatmaxLength: "date-time"
256
   AEAddress:       description: |
          (Array) Address informationA thatreference locatesgenerated andby identifesthe amerchant specificreferencing address,the asorder definedrelated byto athe nationalpayment or internationalanother postalunique service."reference in the context of the merchant. type:
"array"       minItems: 1    This information will items:be transferred via the payment rails to the beneficiary type: "object"LFI.
      additionalProperties: false
 required:   AESponsoredTPPInformation:
       -type: "AddressTypeobject"
      description: |
  - "Country"     The Sponsored TPP  propertiesis:
        * A AddressType:TPP that itself has no direct Open Banking API integrations. 
  $ref: "#/components/schemas/AEAddressTypeCode"      * A TPP that is using the ShortAddress:integration of another TPP that does have direct Open Banking API integrations.
 $ref: "#/components/schemas/AEShortAddress"    properties:
      UnitNumber:  Name:
          $reftype: "#/components/schemas/AEUnitNumberstring"
          FloorNumberminLength: 1
           $refmaxLength: "#/components/schemas/AEFloorNumber"50
          BuildingNumberdescription: |
           $ref: "#/components/schemas/AEBuildingNumber"
  The Sponsored TPP Name
        StreetNameIdentification:
            $reftype: "#/components/schemas/AEStreetNamestring"
          SecondaryNumberminLength: 1
           $refmaxLength: "#/components/schemas/AESecondaryNumber"50
          Districtdescription: |
           $ref: "#/components/schemas/AEDistrict"
   The Sponsored TPP Identification
       PostalCodeadditionalProperties: false
    AEIsPayByAccount:
      $reftype: "#/components/schemas/AEPostalCode"boolean
      description: |
  POBox:      A flag to denote if the Payment $ref: "#/components/schemas/AEPOBox"
 is an E-Commerce transaction
        ZipCodedefault: false
    AECreditorAccount:
      $refdescription: "#/components/schemas/AEZipCode"
          City:
   Unambiguous identification of the account of the creditor to which a credit entry will be posted."
        $reftype: "#/components/schemas/AECityobject"
      additionalProperties: false
  Region:    required:
        $ref:- "#/components/schemas/AERegionSchemeName"
        - "Identification"
Country:        - "Name"
   $ref: "#/components/schemas/AECountryCode"  properties:
      additionalProperties: false SchemeName:
   AEAddressTypeCode:       description$ref: "Specifies the nature of the Address.""#/components/schemas/AEExternalAccountIdentificationCode"
        Identification:
  type: "string"       enum$ref: "#/components/schemas/AEIdentification"
        - "UAEOF.Business"Name:
          -$ref: "UAEOF.Correspondence"#/components/schemas/AEName"
        TradingName:
  - "UAEOF.Residential"       example$ref: "UAEOF.Residential#/components/schemas/AETradingName"
    AEShortAddressAEDebtorAccount:
      description: "AUnambiguous short addressidentification consists of fourthe letters:account regionof code,the branchdebtor code, division code, unique code and a four-digit number for the buildingto which a debit entry will be made."
      type: "stringobject"
      minLengthrequired:
  1      - "SchemeName"
maxLength: 8       example:- "ABCD1234Identification"
     AEUnitNumber:   - "Name"
  description: "Identifies the unit orproperties:
apartment number."       typeSchemeName:
"string"          minLength: 1$ref: "#/components/schemas/AEExternalAccountIdentificationCode"
        maxLengthIdentification:
10          example$ref: "6"
 #/components/schemas/AEIdentification"
  AEFloorNumber:       descriptionName: "Identifies
the building floor number."       type$ref: "string#/components/schemas/AEName"
      minLengthAEMaximumIndividualRequestsToPayAmount:
1       maxLengthdescription: 10|
      example: "2" This is the Maximum AEBuildingNumber:amount a single request to pay amount description:related "Identifiesto the building number."Consent can be. 
   type: "string"    All request to minLength:pay 1amounts must be smaller or equal to maxLength:this 10value.
      exampletype: "34string"
      AEStreetNamepattern: "^\\d{1,16}\\.\\d{2}$"
     description example: "100.00"Identifies
the street name or road."AEMaximumCumulativeNumberOfRequestsToPay:
      type: "stringinteger"
      minLengthdescription: 1|
      maxLength: 70 The maximum cumulative number of all example:succesful "OmarRequest BinTo HassanPays Street"under the Consent. 
 AEDistrict:       description:Every "Identifiessuccessful theRequest districtTo ofPay arelated city."to the Consent is added to the type: "string"
      minLength: 1
      maxLength: 35
      example: "Olaya Dist."total cumulative number of Request To Pay initiations of the Consent which cannot exceed the maximum value agreed with the User at the point of consent.
    AECountryCodeAEMaximumCumulativeValueOfRequestsToPay:
      descriptiontype: "string"Indicates
the country code in which the addressdescription: is|
located (References ISO 3166-1 alpha-2)."    The maximum cumulative type: "string"
      pattern: "^[A-Z]{2,2}$"value of all successfully paid request to pay instructions under the Consent. 
     example: "SA"  Each successfully paid AEPostalCode:request to pay amount (related to  description: " Identifies the postal code; a unique code assigned to a specific geographic area for efficient mail sorting and delivery purposes."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.
      typepattern: "string^\\d{1,16}\\.\\d{2}$"
      minLengthexample: 1"100.00"
      maxLengthAEPeriodTypeMaximumCumulativeValueOfRequestsToPay: 10
      exampletype: "12345string"
    AEPOBox:  description: |
   description: " Identifies the POBox." The maximum cumulative request to pay type: "string"
      minLength: 1value of all request to pay initiations per Period Type.
      maxLengthpattern: 10"^\\d{1,16}\\.\\d{2}$"
      example: "11562100.00"
    AEZipCodeAERevokedBy:
      description: "Identifies|
the ZIP code; a unique code assigned to aDenotes specificthe geographicIdentifier areaof forthe efficientrevocation.
mail
sorting and delivery purposes."     | Identifier| type: "string"Description|
       minLength: 1 |-----------|------------|
      maxLength: 10 | LFI | Revoked by LFI example: "12366"
without User initiation|
   AESecondaryNumber:     | TPP description:| "4Revoked numbersby representingTPP thewithout accurateUser locationinitiation|
coordinates of the address"     | LFI.InitiatedByUser type: "string"
      minLength: 4| Initiated by User via the LFI|
        | maxLength: 4
      example: "1233"TPP.InitiatedByUser | Initiated by User via the TPP|
      AECitytype: "string"
      descriptionenum:
"Identifies the name of the city or town where the address is situated."- "LFI"
        type:- "stringTPP"
      minLength: 1 - "LFI.InitiatedByUser"
    maxLength: 35   -    example: "Riyadh"TPP.InitiatedByUser"
    AERegionAERevokedByPatchConsent:
      description: |
"Identifies the region."      Denotes type: "string"
 the Identifier of the revocation.

   minLength: 1    | Identifier| Description|
maxLength: 35       example: "North"|-----------|------------|
     AEUserIndicators:   | TPP | Revoked type: "object"
  by TPP without User initiation|
   description: |    | TPP.InitiatedByUser | Initiated by User (Payer) Indicatorsvia the TPP|
      propertiestype: "string"
       UserNameenum:
          type:- "objectTPP"
          description: "The Name of the User initiating the Payment"- "TPP.InitiatedByUser"
    AEConsentExpirationDateTime:
      description: |
    properties:    Specified date and time the consent will expire.
 en:       If this is not populated, the consent will type: "string"
              description: "English value of the string"
 remain active as a long lived consent until the maximum consent validity period as per section 4.1.1 Consent Elements in the API User Guide.
        All dates ar:in the JSON payloads are represented in ISO 8601 date-time format.
    type: "string"   All date-time fields in responses must include the timezone. An example  description: "Arabic value of the string"is :2023-04-05T10:43:07+00:00

        * For Payment Consents, GeoLocation:the maximum expiration time limit should be 23:59:59 (1 second before type: "object"
 00:00:00)
        descriptiontype: "string"GPS
to identify and track the whereabouts of the connected electronic device."
 format: "date-time"
    AEAddress:
        requireddescription: |
        (Array) Address information -that "latitude"locates and identifes a specific address, as defined by a national or international -postal "longitudeservice."
      type: "array"
  properties:    minItems: 1
       latitude:
     items:
        type: "stringobject"
        required:
     description: "latitude"    - "AddressType"
       longitude:   - "Country"
          typeproperties:
"string"          AddressType:
    description: "longitude"       $ref:  DeviceId:"#/components/schemas/AEAddressTypeCode"
          ShortAddress:
type: "string"           description$ref: "IMEISV number of the connected electronic device""#/components/schemas/AEShortAddress"
          UnitNumber:
   DeviceOperatingSystem:           type$ref: "string#/components/schemas/AEUnitNumber"
          descriptionFloorNumber:
"Device  operating system"         DeviceOperatingSystemVersion$ref: "#/components/schemas/AEFloorNumber"
         type BuildingNumber:
"string"            description$ref: "Device operating system version""#/components/schemas/AEBuildingNumber"
          StreetName:
 UserOnboardingDateTime:           type$ref: "string#/components/schemas/AEStreetName"
          format: "date-time"SecondaryNumber:
            description$ref: "The exact date and time when the User account was activated with the TPP."#/components/schemas/AESecondaryNumber"
          District:
          AuthenticationChannel:  $ref: "#/components/schemas/AEDistrict"
       description: Channel on whichPostalCode:
the User was authenticated           type$ref: string"#/components/schemas/AEPostalCode"
          enumPOBox:
            - UAEOF.App$ref: "#/components/schemas/AEPOBox"
          ZipCode:
 - UAEOF.Web     AETransactionIndicators:       type$ref: "object"#/components/schemas/AEZipCode"
          descriptionCity:
|         Transaction Indicators  $ref: "#/components/schemas/AECity"
   properties:       Region:
 IsCustomerPresent:           description$ref: "This field differentiates between automatic and manual payment initiation.""#/components/schemas/AERegion"
          Country:
            type$ref: boolean"#/components/schemas/AECountryCode"
        IsContractPresentadditionalProperties: false
    AEAddressTypeCode:
      description: "IndicatesSpecifies if the Payeenature has a contractual relationship with of the TPPAddress."
 
        type: boolean"string"
      enum:
 Channel:       - "Business"
  description: "Where the payment has been initiated- from."Correspondence"

         type: - "stringResidential"
      example: "Residential"
  enum:  AEShortAddress:
      description: "A short address - "UAEOF.Web"
            - "UAEOF.Mobile"
    AEBeneficiaryIndicators:consists of four letters: region code, branch code, division code, unique code and a four-digit number for the building."
        type: "objectstring"
      descriptionminLength: 1
|      maxLength: 8
  Beneficiary   Indicators example: "ABCD1234"
    propertiesAEUnitNumber:
      description: "Identifies AccountType:the unit or apartment number."
      $reftype: "#/components/schemas/AEExternalAccountTypeCode"string"
      minLength: 1
   IsBeneficiaryPrePopulated:   maxLength: 10
      $refexample: "#/components/schemas/AEIsBeneficiaryPrePopulated"6"
    AEFloorNumber:
    TradingName  description: "Identifies the building floor number."
      $reftype: "#/components/schemas/AETradingNamestring"
      minLength: 1
IsVerifiedByTPP:      maxLength: 10
   $ref   example: "#/components/schemas/AEIsVerifiedbyTPP"2"
    AEBuildingNumber:
      AdditionalAccountHolderIdentifiersdescription: "Identifies the building number."
      $reftype: "#/components/schemas/AEAdditionalAccountHolderIdentifiersstring"
        MerchantDetailsminLength: 1
         typemaxLength: "object"10
          descriptionexample: |"34"
    AEStreetName:
       Details ofdescription: "Identifies the Merchant involvedstreet inname theor transactionroad."
      type: "string"
    Merchant Details areminLength: specified1
only for those merchant categories that aremaxLength: generally70
expected to originate retail financial transactions example: "Omar Bin Hassan Street"
     propertiesAEDistrict:
      description: "Identifies the district of a MerchantId:city."
      type: "string"
      descriptionminLength: "MerchantId"1
      maxLength: 35
      typeexample: "stringOlaya Dist."
    AECountryCode:
      description: "Indicates the country code minLength:in 8which the address is located (References ISO 3166-1 alpha-2)."
      maxLengthtype: 20"string"
      pattern: "^[A-Z]{2,2}$"
    MerchantName:  example: "SA"
    AEPostalCode:
      description: "Name by which the merchant is known."
        Identifies the postal code; a unique code assigned to a specific geographic area for efficient mail sorting and delivery purposes."
      type: "string"
      minLength: 1
      minLengthmaxLength: 110
      example: "12345"
    AEPOBox:
   maxLength: 350  description: " Identifies the POBox."
      MerchantSICCodetype: "string"
      minLength: 1
     description maxLength: 10
|      example: "11562"
    AEZipCode:
     SIC codedescription: stands"Identifies forthe standardZIP industrialcode; classificationa (SIC)unique code. assigned to a specific geographic area for efficient mail sorting and delivery purposes."
   This four digit-number identifies a very specific short descriptor of the type of business a company is engaged in.
 type: "string"
      minLength: 1
      maxLength: 10
      example: "12366"
    AESecondaryNumber:
 SIC can be obtained from thedescription: Chamber"4 ofnumbers Commerce.representing the accurate location coordinates of the address"
       type: "string"
      minLength: 4
      minLengthmaxLength: 34
      example: "1233"
      maxLengthAECity:
4      description: "Identifies the name of the city MerchantCategoryCode:or town where the address is situated."
      type: "string"
description: >     minLength: 1
      maxLength: 35
  Category code values are used to enable the classification of
example: "Riyadh"
    AERegion:
      description: "Identifies the region."
     merchants into specific categories based on the type of business,
type: "string"
      minLength: 1
      maxLength: 35
      example: trade"North"
or services supplied.  AEUserIndicators:
      type: "object"
      description: |
Category code conforms to ISO 18245, related to the typeUser of(Payer) servicesIndicators
      properties:
        UserName:
or goods the merchant provides for the transaction."   type: "object"
          typedescription: string"The Name of the User initiating the Payment"
       minLength: 3  properties:
            maxLengthen:
4           additionalProperties: false     type: "string"
   IsBeneficiaryConfirmed:           description: Beneficiary"English accountvalue detailsof havethe beenstring"
confirmed successfully using Confirmation of Payee        ar:
  type: boolean     AEExternalAccountTypeCode:       descriptiontype: "Specifiesstring"
 the type of account (Retail or Corporate)."       typedescription: "string"Arabic value of the string"
  enum:      GeoLocation:
  - "UAEOF.Retail"         -type: "UAEOF.Corporateobject"
    AEIsBeneficiaryPrePopulated:       description: "IsGPS to Beneficiaryidentify populated"and track the whereabouts of the connected type: "booleanelectronic device."
    AEIsVerifiedbyTPP:       descriptionrequired:
"The TPP has onboarded the Beneficiary"       type:- "booleanlatitude"
    AEAdditionalAccountHolderIdentifiers:        type:- "arraylongitude"
        items:  properties:
      type: "object"     latitude:
   description: "Provides the details to identify an account."    type: "string"
   required:           -description: "IdentificationTypelatitude"
          - "Identification" longitude:
       properties:       type: "string"
  IdentificationType:             $refdescription: "#/components/schemas/AERiskExternalAccountIdentificationCodelongitude"
          IdentificationDeviceId:
            $reftype: "#/components/schemas/AEIdentificationstring"
          Namedescription: "IMEISV number of the connected electronic device"
      $ref  DeviceOperatingSystem:
"#/components/schemas/AEName"          additionalPropertiestype: false"string"
    AERiskExternalAccountIdentificationCode:
      description: "Name of the identification scheme, in a coded form as published in an external list."Device operating system"
        DeviceOperatingSystemVersion:
          type: "string"
 
    enum:      description: "Device operating -system version"UAEOF.EmiratesID"
        - "UAEOF.TradeLicenceNumber"UserOnboardingDateTime:
    AEServiceInitiationAuthorizationDetail:       descriptiontype: "Thestring"
schema for service initiation object in the authorization_details"       typeformat: "objectdate-time"
      additionalProperties: false   description: "The exact date required:and time when the User account was activated with -the TPP."type"
        AuthenticationChannel:
- "consent"       properties:  description: Channel on which the User was type:authenticated
          type: "string"
          descriptionenum:
"The type of the service initiation object"         - App
enum:           - "urn:openfinanceuae:service-initiation-consent:v1.0-draft5"
        consent: Web
    AETransactionIndicators:
      type: "object"
      description: |
    additionalProperties: false   Transaction Indicators
      requiredproperties:
        IsCustomerPresent:
   - "ConsentId"      description: "This field differentiates between automatic and - "ControlParametersmanual payment initiation."
          type: boolean
- "PaymentPurposeCode"       IsContractPresent:
     - "AcceptedAuthorizationType"    description: "Indicates if the Payee has a contractual relationship with -the TPP."PersonalIdentifiableInformation"
          propertiestype: boolean
        Channel:
  ConsentId:
            description: "Where the payment has been initiated from."
         description type: "Uniquestring"
identification as assigned to identify the service initiation consent resource." enum:
            - type: "stringWeb"
            -  minLength"Mobile"
    AEBeneficiaryIndicators:
1      type: "object"
      description: |
  maxLength: 128     Beneficiary Indicators
      BaseConsentIdproperties:
        AccountType:
          $ref: "#/components/schemas/AEBaseConsentIdAEExternalAccountTypeCode"
            AcceptedAuthorizationType:
   IsBeneficiaryPrePopulated:
          $ref: "#/components/schemas/AEAcceptedAuthorizationTypeRequestPaymentsAEIsBeneficiaryPrePopulated"
            AuthorizationExpirationTimeWindow:
   TradingName:
          $ref: "#/components/schemas/AEAuthorizationExpirationTimeWindowAETradingName"
            ExpirationDateTimeIsVerifiedByTPP:
              $ref: "#/components/schemas/AEConsentExpirationDateTimeAEIsVerifiedbyTPP"
            Permissions:
   AdditionalAccountHolderIdentifiers:
          $ref: "#/components/schemas/AEConsentPermissionsAEAdditionalAccountHolderIdentifiers"
        MerchantDetails:
   ReadRefundAccount:       type: "object"
      $ref: "#/components/schemas/AEReadRefundAccount"      description: |
     CurrencyRequest:       Details of the Merchant involved in the transaction.
$ref: "#/components/schemas/AECurrencyRequest"           Merchant Details PersonalIdentifiableInformation:are specified only for those merchant categories that are generally expected to originate retail financial $ref: "#/components/schemas/AEJWEPaymentPII"transactions
          properties:
  ControlParameters:          MerchantId:
    description: |         description: "MerchantId"
      Control Parameters set the overall rules for the Payment Scheduletype: "string"
              typeminLength: "object"8
              additionalPropertiesmaxLength: false20
            MerchantName:
 properties:             description: "Name by which IsPayByAccount:the merchant is known."
               $reftype: "#/components/schemas/AEIsPayByAccountstring"
                ConsentScheduleminLength: 1
              maxLength: 350
 type: "object"          MerchantSICCode:
        description: |     description: |
              The various paymentSIC typescode thatstands canfor bestandard initiated:industrial classification (SIC) code.
                This *four Adigit-number Singleidentifies Paymenta very specific short descriptor of the type of business a company is engaged in.
      * A Multi-Payment        SIC can be obtained from the Chamber of Commerce.
    * A Combined Payment (one SinglePayment and one MultiPayment)  type: "string"
              minLength: properties:3
              maxLength: 4
    SinglePayment:        MerchantCategoryCode:
              description: |>
                Category code values are used to enable the Aclassification Consentof
definition for defining Single Payments            merchants into specific categories based on the type of business,
 oneOf:               trade or services supplied. 

    - $ref: "#/components/schemas/AESingleInstantPayment"          Category code conforms to ISO 18245, related to the type of services
    - $ref: "#/components/schemas/AESingleFutureDatedPayment"          or goods the merchant provides for the transaction."
     discriminator:         type: string
              propertyNameminLength: Type3
                    MultiPaymentmaxLength: 4
          additionalProperties: false
         descriptionIsBeneficiaryConfirmed:
|          description: Beneficiary account details have been confirmed successfully using Confirmation of Payee
   A Consent definition for defining Multi Payments type: boolean
        ConfirmationOfPayeeResponse:
           $ref: "#/components/schemas/AELongLivedPaymentConsentAEConfirmationOfPayeeResponse"
    AEExternalAccountTypeCode:
               FilePaymentdescription: "Specifies the type of account (Retail or Corporate)."
      type: "string"
      descriptionenum:
|        - "Retail"
        - "Corporate"
    AEIsBeneficiaryPrePopulated:
A Consent definition for defining Multi Paymentsdescription: "Is Beneficiary populated"
      type: "boolean"
    AEIsVerifiedbyTPP:
      $refdescription: "#/components/schemas/AEFilePaymentConsent"
    The TPP has onboarded the Beneficiary"
             additionalPropertiestype: false"boolean"
    AEAdditionalAccountHolderIdentifiers:
       PayerReferencetype: "array"
      items:
      description: | type: "object"
        description: "Provides the details to identify Reasonan oraccount."
reference for the payer regarding the Payment  required:
          -  $ref: "#/components/schemas/AEReference"SchemeName"
          - "Identification"
BeneficiaryReference:        properties:
       description: |  SchemeName:
            $ref:  Reason or reference for the beneficiary regarding the Payment
 "#/components/schemas/AERiskExternalAccountIdentificationCode"
          Identification:
            $ref: "#/components/schemas/AEReferenceAEIdentification"
            PaymentPurposeCodeName:
              $ref: "#/components/schemas/AEPaymentPurposeCodeAEName"
        additionalProperties: false
  SponsoredTPPInformation  AERiskExternalAccountIdentificationCode:
      description: "Name of the identification scheme, in  $refa coded form as published in an external list."
      type: "#/components/schemas/AESponsoredTPPInformationstring"
      enum:
 Subscription:
        - "EmiratesID"
        $ref:- "#/components/schemas/AEEventNotificationTradeLicenceNumber"
    AEConsentPermissions:
      type: "array"
      description: | 
        Specifies the permitted Account Access data types. 
        This is a list of the data groups being consented by the User, and requested for authorization with the LFI.

        This allows a TPP to request a balance check permission.
      items:
        type: "string"
        enum:
          - "ReadAccountsBasic" # Ability to read basic account information
          - "ReadAccountsDetail" # Ability to read account identification details
          - "ReadBalances" # Ability to read all balance information
      minItems: 1
    AECurrencyRequest:
      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.
      type: "object"
      additionalProperties: false
      required:
        - "CurrencyOfTransfer"
      properties:
        InstructionPriority:
          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."
          type: "string"
          enum:
            - "Normal"
            - "Urgent"
        ExtendedPurpose:
          description: "Specifies the purpose of an international payment, when there is no corresponding 4 character code available in the ISO20022 list of Purpose Codes."
          type: "string"
          minLength: 1
          maxLength: 140
        ChargeBearer:
          $ref: "#/components/schemas/AEChargeBearerType1Code"
        CurrencyOfTransfer:
          description: "Specifies the currency of the to be transferred amount, which is different from the currency of the debtor's account."
          type: "string"
          pattern: "^[A-Z]{3,3}$"
        DestinationCountryCode:
          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)."
          type: "string"
          pattern: "[A-Z]{2,2}"
        ExchangeRateInformation:
          type: "object"
          additionalProperties: false
          required:
            - "UnitCurrency"
            - "RateType"
          description: "Provides details on the currency exchange rate and contract."
          properties:
            UnitCurrency:
              description: "Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP."
              type: "string"
              pattern: "^[A-Z]{3,3}$"
            ExchangeRate:
              description: "The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency."
              type: "number"
            RateType:
              description: "Specifies the type used to complete the currency exchange."
              type: "string"
              enum:
                - "Actual"
                - "Agreed"
                - "Indicative"
            ContractIdentification:
              description: "Unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent."
              type: "string"
              minLength: 1
              maxLength: 256
    AEChargeBearerType1Code:
      description: "Specifies which party/parties will bear the charges associated with the processing of the payment transaction."
      type: "string"
      enum:
        - "BorneByCreditor"
        - "BorneByDebtor"
        - "FollowingServiceLevel"
        - "Shared"
    AEExchangeRateInformation:
      type: "object"
      additionalProperties: false
      required:
        - "UnitCurrency"
        - "ExchangeRate"
        - "RateType"
      description: "Further detailed information on the exchange rate that has been used in the payment transaction."
      properties:
        UnitCurrency:
          description: "Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP."
          type: "string"
          pattern: "^[A-Z]{3,3}$"
        ExchangeRate:
          description: "The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency."
          type: "number"
        RateType:
          description: "Specifies the type used to complete the currency exchange."
          type: "string"
          enum:
            - "Actual"
            - "Agreed"
            - "Indicative"
        ContractIdentification:
          description: "Unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent."
          type: "string"
          minLength: 1
          maxLength: 256
        ExpirationDateTime:
          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. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00"
          type: "string"
          format: "date-time"
    AEConfirmationOfPayeeResponse:
      description: The JSON Web Signature returned by the Payee Confirmation operation at the Confirmation of Payee API. The value must be the full JWS string, including the header and signature, without decoding to an object. If Confirmation of Payee is not performed this property can be omitted
      type: string
      pattern: '^.+\..+\..+$'
    AEPaymentPII:
      type: "object"
      additionalProperties: false
      description: "Elements of Personal Identifiable Information data"
      properties:
        Initiation:
          type: "object"
          additionalProperties: false
          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."
          properties:
            DebtorAccount:
              type: "object"
              additionalProperties: false
              required:
                - "IdentificationTypeSchemeName"
                - "Identification"
              description: "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction."
              properties:
                IdentificationType:
    to which a debit entry will be made as a result of the transaction."
              $refproperties:
"#/components/schemas/AEExternalAccountIdentificationCode"                 IdentificationSchemeName:
                  $ref: "#/components/schemas/AEIdentificationAEExternalAccountIdentificationCode"
                MobileNumberIdentification:
                  $ref: "#/components/schemas/AEMobileNumberAEIdentification"
                Name:
                  $ref: "#/components/schemas/AEName"
            CreditorAgent:
              $ref: "#/components/schemas/AECreditorAgent"
            Creditor:
              type: "object"
              additionalProperties: false
              description: "Party to which an amount of money is due."
              properties:
                Name:
                  description: | 
                    Name by which a party is known and which is usually used to identify that party.
                    This may be used to identify the Creditor for international payments.
                  type: "string"
                  minLength: 1
                  maxLength: 140
                PostalAddress:
                  $ref: "#/components/schemas/AEAddress"
            CreditorAccount:
              $ref: "#/components/schemas/AECreditorAccount"
            ConfirmationOfPayeeResponse:
              $ref: "#/components/schemas/AEConfirmationOfPayeeResponse"
        Risk:
          $ref: "#/components/schemas/AERisk"
    AEJWEPaymentPII:
      type: string
      description: |
        A JSON Web Encryption (JWE) object, which encapsulates a JWS. The value is a compact serialization
        of a JWE, which is a string consisting of five base64url-encoded parts joined by dots. It encapsulates encrypted content using JSON data structures.

        The decrypted JWS content has the structure of the AEPaymentPII schema.
      example: "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ...."
    AEReadRefundAccount:
      description: "Allows the LFI to share the refund account details with TPP"
      type: boolean
    AEFileNumberOfTransactions:
      type: "integer"
      description: |
        Number of individual transactions contained in the payment information group.	
    AEControlSum:
      description: |
        Total of all individual amounts included in the group, irrespective of currencies.
      type: "string"
      pattern: "^\\d{1,16}\\.\\d{2}$"
      example: "100.00"
    AEFileType:
      type: "string"
      description: "Specifies the payment file type"
      minLength: 1
      maxLength: 40
    AEFileHash:
      type: "string"
      description: "A base64 encoding of a SHA256 hash of the file to be uploaded."
      minLength: 1
      maxLength: 44
  ############################################
  # PARAMETERS
  ############################################
  parameters:
    #################################################
    # HEADER PARAMETERS
    #################################################
    authorization:
      in: "header"
      name: "authorization"
      required: true
      description: "An authorization Token as per https://tools.ietf.org/html/rfc6750"
      schema:
        type: "string"
      example: Bearer 12773da5-81c5-45e7-893c-381ca3cecc30
    x-customer-user-agent:
      in: "header"
      name: "x-customer-user-agent"
      description: "Indicates the user-agent that the User is using."
      required: false
      schema:
        type: "string"
      example: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
    x-fapi-customer-ip-address:
      in: "header"
      name: "x-fapi-customer-ip-address"
      required: false
      description: "The User's IP address if the User is currently logged in with the TPP."
      schema:
        type: "string"
      example: 51.235.115.203
    x-fapi-auth-date:
      in: "header"
      name: "x-fapi-auth-date"
      required: false
      description: "The time when the User last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2023 19:43:31 UTC"
      schema:
        type: "string"
        pattern: "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$"
      example: Thu, 26 Jan 2023 16:31:32 UTC
    x-fapi-interaction-id-request:
      in: "header"
      name: "x-fapi-interaction-id"
      required: false
      description: "An RFC4122 UID used as a correlation id."
      schema:
        type: "string"
      example: 49df2c2c-6b80-40ee-96a1-71910a248048
    x-idempotency-key:
      name: "x-idempotency-key"
      in: "header"
      description: "| 
        Ensures the LFI processes the resource successfully only once per x-idempotency-key"
        
        The TPP must not change the request body while using the same x-idempotency-key, changes to the request body 
        will not result any action on the end resource. 

        The OFP will treat a request as idempotent if it had received the first request with the same x-idempotency-key 
        from the same TPP in the preceding 24 hours.
      required: true
      schema:
        type: "string"
        maxLength: 40
        pattern: "^(\\S*)$"
      example: 78dae4513b8847f98e2d4173b4ed0eb6
    Prefer:
      name: "Prefer"
      in: "header"
      description: |
        Preferences that allow certain behaviours on the API. 
        * Request To Pay: CancelAllPendingRequestsToPay=true - Can be used to cancel all Requests to Pay that are in a Pending Status
      required: false
      schema:
        type: "string"
        maxLength: 40
      example: CancelAllPendingRequestsToPay=true
    #################################################
    # PATH PARAMETERS
    #################################################
    PaymentId:
      name: "PaymentId"
      in: "path"
      description: "Unique identification as assigned by the LFI to uniquely identify the payment resource."
      schema:
        type: "string"
        minLength: 1
        maxLength: 40
      required: true
      example: 83b47199-90c2-4c05-9ef1-aeae68b0fc7c
    ConsentId:
      name: "ConsentId"
      in: "path"
      description: "Unique identification as assigned by the LFI to uniquely identify the Consent resource"
      required: true
      schema:
        type: "string"
      example: aac-69255d98-ab0e-4758-92a7-cacbf3073efa
    #################################################
    # QUERY PARAMETERS
    #################################################
    paymentTransactionId:
      in: "query"
      name: "paymentTransactionId"
      description: |
        A series of one or more payment rails transactionIds. For example:
        * A single transactionId: 
        ```
        paymentTransactionId=oz2c8wpre1vy34tx7q 
        ```
        * Multiple transactionIds: 
        ```
        paymentTransactionId=oz2c8wpre1vy34tx7q,aa2c8wpre1vy34txbb,cc2c8wpre1vy34txdd 
        ```
      schema:
        type: "array"
        items:
          type: "string"
      style: "form"
      explode: false
      examples:
        singleTransactionId:
          summary: "Example of a single transaction"
          value: ["oz2c8wpre1vy34tx7q"]
        multiTransactionId:
          summary: "Example of multiple transactions"
          value:
            ["oz2c8wpre1vy34tx7q", "aa2c8wpre1vy34txbb", "cc2c8wpre1vy34txdd"]
      allowEmptyValue: false
    baseConsentId:
      in: "query"
      name: "baseConsentId"
      required: true
      description: |
        A specific baseConsentId. For example:
        ```
        baseConsentId=abc-19877d98-ab0e-4758-92a7-vvffr1234abv 
        ```
      schema:
        type: "string"
      allowEmptyValue: false
      example: abc-19877d98-ab0e-4758-92a7-vvffr1234abv
  #################################################
  # SECURITY SCHEMES
  #################################################
  securitySchemes:
    TPPOAuth2Security:
      type: oauth2
      description: "TPP confidential client authorization with the LFI to stage a consent. **Please refer to [OpenID FAPI Security Profile 1.0 -Part 2 Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0.html#authorization-server) - 5.2.2 point 14 - shall authenticate the confidential client using one of the following methods private_key_jwt and [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) 9. Client Authentication private_key_jwt**"
      flows:
        clientCredentials:
          tokenUrl: "https://authserver.example/token"
          scopes:
            openid: Activates OpenID Connect Support
            payments: Ability for accessing payments.
            accounts: Ability for accessing account information.
    UserOAuth2Security:
      type: oauth2
      description: "[OAuth2 PAR flow](https://datatracker.ietf.org/doc/html/rfc9126), it is required when the User needs to perform SCA with the LFI when a TPP wants to access an LFI resource owned by the User. **Please refer to [OpenID FAPI Security Profile 1.0 -Part 2 Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0.html#authorization-server) - 5.2.2 point 14 - shall authenticate the confidential client using one of the following methods private_key_jwt and [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) 9. Client Authentication private_key_jwt**"
      flows:
        authorizationCode:
          authorizationUrl: "https://authserver.example/authorization"
          tokenUrl: "https://authserver.example/token"
          scopes:
            openid: Activates OpenID Connect Support
            payments: Ability for initiating payments. This is a parameterized scope with the ConsentId
            accounts: Ability for accessing account information.
    LFIWebhookSecurity:
      type: http
      description: "The LFI generates a Self Signed JWT Authorization Token for Client Authentication with the TPP. **Please refer to Self-Signed JWT Authorization Token Specification in the UAE Standard API User Guide**"
      scheme: bearer
      bearerFormat: JWT
  ############################################
  # EXAMPLES
  ############################################
  examples:
    Error400BadRequestSigned:
      summary: 400 Bad Request
      description: 400 Bad Request
      value:
        {
          "iss": "c50f0152-49bb-4dc4-b866-b625271c4e78",
          "exp": 3349494246,
          "nbf": 1675765189,
          "aud": ["e63df191-5fff-4e9c-bba2-b273c94e87f0"],
          "iat": 1675765189,
          "message":
            {
              "Errors":
                [
                  {
                    "Code": "UAEOF.GenericError",
                    "Message": { "en": "A mandatory field is missing." },
                  },
                ],
            },
        }
    Error403ForbiddenSigned:
      summary: 403 Forbidden
      description: 403 Forbidden
      value:
        {
          "iss": "c50f0152-49bb-4dc4-b866-b625271c4e78",
          "exp": 3349494246,
          "nbf": 1675765189,
          "aud": ["e63df191-5fff-4e9c-bba2-b273c94e87f0"],
          "iat": 1675765189,
          "message":
            {
              "Errors":
                [
                  {
                    "Code": "UAEOF.AccessToken.InvalidScope",
                    "Message":
                      {
                        "en": "The access token did not have an appropriate scope attached to it.",
                      },
                  },
                ],
            },
        }
    Error500InternalServerErrorSigned:
      summary: 500 Internal Server Error
      description: 500 Internal Server Error
      value:
        {
          "iss": "c50f0152-49bb-4dc4-b866-b625271c4e78",
          "exp": 3349494246,
          "nbf": 1675765189,
          "aud": ["e63df191-5fff-4e9c-bba2-b273c94e87f0"],
          "iat": 1675765189,
          "message":
            {
              "Errors":
                [
                  {
                    "Code": "UAEOF.GenericError",
                    "Message":
                      {
                        "en": "An Internal Server error has occurred. Please retry in 60 seconds.",
                      },
                  },
                ],
            },
        }

...

View file
nameuae-bank-initiation-openapi.yamlxlsx
View file
nameuae-bank-serviceinitiation-initiationopenapi.xlsxyaml