Lean Technologies Account On File API

The Account On File API from Lean Technologies — 2 operation(s) for account on file.

Operations 2

POST /consents/account-on-file Create a new non-authorized AoF consent #
POST /payments/account-on-file Initiate a AoF payment

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lean-technologies-account-on-file-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lean-technologies-account-on-file-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: UAE - V2 Account On File API
  description: ''
  version: 1.0.0
servers:
- url: https://sandbox.leantech.me
  description: Sandbox
- url: https://api2.leantech.me
  description: Production / Pre-live
security:
- bearer: []
tags:
- name: Account On File
paths:
  /consents/account-on-file:
    post:
      summary: Create a new non-authorized AoF consent
      description: This operation will result in creation of non-authorized consent of Account-On-File type.
      operationId: createAccountOnFileConsent
      tags:
      - Account On File
      security:
      - OAuth2:
        - api
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - customer_id
              - destination_account_id
              - currency
              - reference
              - purpose
              - control_parameters
              properties:
                customer_id:
                  type: string
                  format: uuid
                  description: The unique identifier of the customer for whom the consent is being created.
                  example: acc176ca-7716-4fbb-a735-d0e3dec24b40
                destination_account_id:
                  type: string
                  format: uuid
                  description: The unique identifier of the account acting as a consent beneficiary.
                  example: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                currency:
                  $ref: '#/components/schemas/Currency'
                reference:
                  $ref: '#/components/schemas/Reference'
                purpose:
                  $ref: '#/components/schemas/PaymentPurposeCode'
                control_parameters:
                  $ref: '#/components/schemas/AccountOnFileControlParameters'
                government_identifier:
                  description: "Unique government identifier of the customer making the payment.  \nAs required by the UAE Open Finance standard, it ensures the debtor can be uniquely recognized.\nThis field supports providing or updating the identifier on-the-fly when creating a consent."
                  allOf:
                  - $ref: '#/components/schemas/GovernmentIdentifierRequest'
                start_date_time:
                  type: string
                  format: date-time
                  nullable: true
                  example: '2025-07-11T16:58:03.559872Z'
                  description: "The date and time when the consent becomes active.  \n**Optional.** Defaults to the current date and time if not provided.\n"
                expiration_date_time:
                  type: string
                  format: date-time
                  nullable: true
                  example: '2026-07-11T16:58:03.559872Z'
                  description: "The date and time when the consent expires.  \n**Optional.** Defaults to one year after `start_date_time` if not provided.\n"
            examples:
              minimal:
                summary: Minimal Request
                description: The minimum required fields to create a new Account On File consent.
                value:
                  customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                  destination_account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                  currency: AED
                  reference: ACME-ACCOUNT-LINK-2025-001
                  purpose: GDS
                  control_parameters:
                    period_type: Day
                    max_individual_amount: '1000.00'
              complete:
                summary: Complete Request
                description: The complete set of fields to create a new Account On File consent.
                value:
                  customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                  destination_account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                  currency: AED
                  reference: ACME-ACCOUNT-LINK-2025-001
                  purpose: GDS
                  control_parameters:
                    period_type: Day
                    max_individual_amount: '1000.00'
                    max_cumulative_amount: '10000.00'
                    max_cumulative_number_of_payments: 100
                    max_cumulative_amount_per_period: '3000.00'
                    max_cumulative_number_of_payments_per_period: 10
                  government_identifier:
                    type: EMIRATES_ID
                    value: 784-1234-1234-1234
                  start_date_time: '2025-12-01T12:00:00.559872Z'
                  expiration_date_time: '2026-12-10T16:00:00.559872Z'
        description: Request to create a new Account on File consent
        required: true
      responses:
        '200':
          description: Consent created successfully
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - application_id
                - start_date_time
                - expiration_date_time
                - customer_id
                - status
                - destination_account_id
                - reference
                - currency
                - payment_purpose
                - control_parameters
                properties:
                  id:
                    type: string
                    format: uuid
                    description: The unique identifier for the consent. Provided as a UUID.
                  application_id:
                    type: string
                    description: Application identifier owning this consent
                  start_date_time:
                    type: string
                    format: date-time
                    description: Date and time from when the consent will be active
                  expiration_date_time:
                    type: string
                    format: date-time
                    description: Date and time of the expiration of this consent
                  customer_id:
                    type: string
                    format: uuid
                    description: Id of a customer that this consent belongs to
                  status:
                    type: string
                    enum:
                    - AWAITING_AUTHORISATION
                    - AUTHORISED
                    - REVOKED
                    - REJECTED
                    - EXPIRED
                    - CONSUMED
                    - SUSPENDED
                    description: Current status of this consent.
                  destination_account_id:
                    type: string
                    format: uuid
                    description: Account id that this consent allows payments to
                  reference:
                    type: string
                    description: A reason or reference in relation to a payment. Passed as a part of OF `creditor_reference`. This value will be used as default reference for payments made with this consent.
                  currency:
                    $ref: '#/components/schemas/Currency'
                  purpose:
                    $ref: '#/components/schemas/PaymentPurposeCode'
                  control_parameters:
                    $ref: '#/components/schemas/AccountOnFileControlParameters'
              examples:
                minimal:
                  summary: Minimal Response
                  value:
                    id: 123e4567-e89b-12d3-a456-426655440000
                    status: AWAITING_AUTHORISATION
                    customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                    destination_account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                    currency: AED
                    reference: ACME-ACCOUNT-LINK-2025-001
                    purpose: GDS
                    control_parameters:
                      period_type: Day
                      max_individual_amount: '1000.00'
                complete:
                  summary: Complete Response
                  value:
                    id: 123e4567-e89b-12d3-a456-426655440000
                    status: AWAITING_AUTHORISATION
                    customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                    destination_account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                    currency: AED
                    reference: ACME-ACCOUNT-LINK-2025-001
                    purpose: GDS
                    start_date_time: '2025-07-11T16:58:03.559872Z'
                    expiration_date_time: '2026-07-11T16:58:03.559872Z'
                    control_parameters:
                      period_type: Day
                      max_individual_amount: '1000.00'
                      max_cumulative_amount: '10000.00'
                      max_cumulative_number_of_payments: 100
                      max_cumulative_amount_per_period: '3000.00'
                      max_cumulative_number_of_payments_per_period: 10
  /payments/account-on-file:
    post:
      summary: Initiate a AoF payment
      description: Endpoint responsible for initiating a AoF payment against an existing, authorized consent
      tags:
      - Account On File
      security:
      - OAuth2:
        - api
      parameters:
      - name: Idempotency-Key
        in: header
        required: true
        description: 'Unique key used to ensure idempotency of requests.

          Must be unique per operation.

          '
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              description: Request to initiate a new account on file payment
              type: object
              required:
              - consent_id
              - amount
              - risk_details
              properties:
                consent_id:
                  type: string
                  format: uuid
                  description: An id of an authorized consent that should be used to authorize this payment
                amount:
                  type: number
                  format: double
                  description: The amount to be paid.
                purpose:
                  $ref: '#/components/schemas/PaymentPurposeCode'
                risk_details:
                  allOf:
                  - $ref: '#/components/schemas/RiskDetails'
                reference:
                  type: string
                  nullable: true
                  description: The reference submitted to the bank as a reference when initiating a payment. Can be used for reconciliation.
              example:
                consent_id: 123e4567-e89b-12d3-a456-426655440000
                amount: 130.52
                purpose: GDS
                reference: INV-2025-004321
                risk_details:
                  transaction_indicators:
                    channel: WEB
                  debtor_indicators:
                    geo_location:
                      latitude: 25.2048
                      longitude: 55.2708
      responses:
        '200':
          description: "Indicates that request was processed and payment initiation request was sent to the bank. \nThis does not mean that the payment was successful!"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payments20InitiateAccountOnFilePaymentResponse'
              examples:
                minimal:
                  summary: Minimal Response
                  value:
                    id: 341c3308-408d-48d9-ae44-c98eb1aa9a6f
                    account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                    application_id: 21ecf613-adaa-4c6b-8cd5-827de43bbe52
                    consent_id: 123e4567-e89b-12d3-a456-426655440000
                    status: CREATED
                    reference: ACME-ACCOUNT-LINK-2025-001
                    amount:
                      currency: AED
                      value: 130.52
                    type: ACCOUNT_ON_FILE
                    sender_customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                complete:
                  summary: Complete Response
                  value:
                    id: 341c3308-408d-48d9-ae44-c98eb1aa9a6f
                    account_id: 911f30d8-8fc8-4fe9-86a1-3f9fea11a674
                    application_id: 21ecf613-adaa-4c6b-8cd5-827de43bbe52
                    consent_id: 123e4567-e89b-12d3-a456-426655440000
                    status: FAILED
                    reference: ACME-ACCOUNT-LINK-2025-001
                    amount:
                      currency: AED
                      value: 130.52
                    type: ACCOUNT_ON_FILE
                    sender_customer_id: acc176ca-7716-4fbb-a735-d0e3dec24b40
                    failure_details:
                      code: BANK_ISSUE
                      details: The banks is having a technical issues. Please try again later.
components:
  schemas:
    DeviceEnvironmentContext:
      type: string
      enum:
      - VPN_DETECTED
      - EMULATOR_DETECTED
    BiometricType:
      type: string
      title: BiometricType
      enum:
      - FINGERPRINT
      - FACIAL_RECOGNITION
      - IRIS
      - VOICE_PRINT
      - OTHER
    AppInformation:
      title: AppInformation
      type: object
      description: Mobile application specific information.
      properties:
        app_version:
          type: string
          description: Version of the mobile application.
        package_name:
          type: string
          description: Application package identifier.
        build_number:
          type: string
          description: Application build number.
    Reference:
      title: Reference
      description: A reason or reference in relation to a payment. Maximum 64 chars
      type: string
      maxLength: 64
      example: 'Invoice #12345'
    ScrollBehavior:
      title: ScrollBehavior
      type: object
      properties:
        direction:
          type: string
          enum:
          - UP
          - DOWN
          - BOTH
        speed:
          description: Average scroll speed in pixels per second.
          type: number
          format: double
        frequency:
          description: Number of scroll events per minute
          type: number
          format: double
    DeviceInformation:
      title: DeviceInformation
      description: Detailed device information
      properties:
        device_id:
          type: string
          description: IMEISV number of the connected electronic device.
        alternative_device_id:
          type: string
          description: Alternative identifier for the connected electronic device.
        device_operating_system:
          type: string
          description: Device operating system.
        device_operating_system_version:
          type: string
          description: Device operating system version.
        device_binding_id:
          type: string
          description: An identifier that associates a device uniquely with a specific application.
        last_binding_date_time:
          type: string
          format: date-time
          description: Date and time when the device was last bound to the application.
        binding_duration:
          type: string
          description: ISO 8601 duration since device was last bound (e.g., P30D for 30 days).
        binding_status:
          type: string
          enum:
          - ACTIVE
          - EXPIRED
          - REVOKED
          - SUSPENDED
        device_type:
          $ref: '#/components/schemas/DeviceType'
        device_manufacturer:
          $ref: '#/components/schemas/DeviceManufacturer'
        device_language:
          type: string
        device_local_date_time:
          type: string
        connection_type:
          $ref: '#/components/schemas/ConnectionType'
        screen_information:
          $ref: '#/components/schemas/ScreenInformation'
        battery_status:
          $ref: '#/components/schemas/BatteryStatus'
        touch_support:
          $ref: '#/components/schemas/TouchSupport'
        motion_sensors:
          $ref: '#/components/schemas/MotionSensors'
        device_environment_context:
          type: array
          items:
            $ref: '#/components/schemas/DeviceEnvironmentContext'
    BiometricCapabilities:
      title: BiometricCapabilities
      properties:
        supports_biometric:
          type: boolean
        biometric_types:
          type: array
          items:
            $ref: '#/components/schemas/BiometricType'
    GovernmentIdentifierRequest:
      type: object
      required:
      - type
      - value
      properties:
        value:
          type: string
          description: The identifier value
          minLength: 1
          pattern: ^(?!\s*$).+
        type:
          type: string
          description: The type of Government ID
          enum:
          - EMIRATES_ID
          - TRADE_LICENSE_NUMBER
    Payments20InitiateAccountOnFilePaymentResponse:
      type: object
      required:
      - id
      - account_id
      - application_id
      - consent_id
      - status
      - amount
      - sender_customer_id
      - created_at
      - last_modified_at
      - type
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier for the payment.
        account_id:
          type: string
          format: uuid
          description: The account id that the payment is being made to.
        application_id:
          type: string
          format: uuid
          description: The application id that the payment is being made to.
        consent_id:
          type: string
          format: uuid
          description: The consent id that the payment is being made under.
        status:
          type: string
          description: "Reflects the latest known state of processing in Lean’s systems and bank.\n\n**Possible values:**\n\n- **`CREATED`** —  \n  An internal transaction record has been created, but **no interaction with the bank has occurred yet**.  \n  This includes any validation steps required before initiation.  \n  Detailed progress within the approval flow may be represented through *sub-statuses*.\n\n- **`PROCESSING`** —  \n  The transaction has been **submitted or is being attempted at the bank**.  \n  Multiple initiation attempts may occur under this state.  \n  More granular progress can be indicated by *sub-statuses*.\n\n- **`PROCESSED`** —  \n  The **final successful** state.  \n  The payment has been confirmed as completed by the payment status tracking process.\n  Sub-statuses or other technology-specific codes may appear to indicate settlement details.\n\n- **`FAILED`** —  \n  The **final unsuccessful** state.  \n  Failure may occur:\n    - before any bank initiation (e.g. validation issues),\n    - after repeated unsuccessful initiation attempts (e.g. bank unavailable, other technical issues), or\n    - even after an initially successful initiation followed by a **reversal detected by payment status tracking** before final reporting.\n---\n**Notes:**\n- `CREATED` and `PROCESSING` are transitional states.  \n- `PROCESSED` and `FAILED` are terminal states.  \n- Sub-statuses provide additional context.\n"
          enum:
          - CREATED
          - PROCESSING
          - PROCESSED
          - FAILED
        sub_status:
          type: string
          description: 'Provides additional detail about the current lifecycle stage of the payment.

            It can represent intermediate workflow steps, bank-specific responses or system conditions that further qualify the main status.'
        reference:
          type: string
          description: A reason or reference in relation to a payment. Passed as a part of OF `creditor_reference`. This value will be used as default reference for payments made with this consent.
        amount:
          $ref: '#/components/schemas/CurrencyAmount'
        type:
          type: string
          enum:
          - ACCOUNT_ON_FILE
        sender_customer_id:
          type: string
          format: uuid
          description: The customer id of the sender.
        created_at:
          type: string
          format: date-time
          description: The date and time when the payment was created.
        last_modified_at:
          type: string
          format: date-time
          description: The date and time when the payment was last modified.
        failure_details:
          type: object
          properties:
            code:
              type: string
              description: The error code.
            details:
              type: string
              description: The error details.
    PaymentPurposeCode:
      type: string
      title: PaymentPurposeCode
      description: "A category code that relates to the type of services or goods that corresponds to the underlying purpose of the payment.  \nThe code must conform to the payment purpose code list.  \n**Supported values:**  \n- `FIS` – Financial services\n- `TCS` – Telecommunication services\n- `MWP` – Mobile wallet card payments\n- `OAT` – Own account transfer\n- `IFS` – Information services\n- `RNT` – Rent payments\n- `LNC` – Loan charges\n- `PIN` – Personal investments\n- `GDS` – Goods bought or sold"
      enum:
      - FIS
      - TCS
      - MWP
      - OAT
      - IFS
      - RNT
      - LNC
      - PIN
      - GDS
    DeviceType:
      type: string
      title: DeviceType
      enum:
      - MOBILE
      - DESKTOP
      - TABLET
      - WEARABLE
      - OTHER
    RiskDetails:
      title: RiskDetails
      type: object
      description: The Risk section is used to specify additional details for risk/fraud scoring regarding Payments
      properties:
        debtor_indicators:
          $ref: '#/components/schemas/DebtorIndicators'
        destination_delivery_address:
          $ref: '#/components/schemas/DestinationDeliveryAddress'
        transaction_indicators:
          $ref: '#/components/schemas/TransactionIndicators'
    Address:
      title: Address
      type: object
      required:
      - address_line
      - country
      properties:
        address_type:
          type: string
          enum:
          - BUSINESS
          - CORRESPONDENCE
          - RESIDENTIAL
        address_line:
          type: string
        building_number:
          type: string
        building_name:
          type: string
        floor:
          type: string
        street_name:
          type: string
        district_name:
          type: string
        post_box:
          type: string
        town_name:
          type: string
        region:
          type: string
        country:
          type: string
    KnowledgeFactor:
      title: KnowledgeFactor
      description: The User's knowledge, that only the User knows
      type: object
      properties:
        is_used:
          type: boolean
        type:
          type: string
          enum:
          - PIN
          - PASSWORD
          - SECURITY_QUESTION
          - SMS_OTP
          - EMAIL_OTP
          - OTP_PUSH
          - OTHER
    AccountOnFileControlParameters:
      title: AccountOnFileControlParameters
      description: "Defines the control parameters for a Account On File (AoF) consent.  \nThese parameters specify the applicable limits for individual payments, cumulative amounts, and the number of payments allowed within a defined period or across the consent's lifetime.\nAt least one of `max_individual_amount`, `max_cumulative_amount`, or `max_cumulative_number_of_payments` must be provided."
      type: object
      required:
      - period_type
      properties:
        period_type:
          $ref: '#/components/schemas/PeriodType'
        max_individual_amount:
          type: number
          description: Maximum amount allowed for a single payment
          minimum: 0.01
        max_cumulative_amount:
          type: number
          description: Maximum cumulative amount allowed across all payments
          minimum: 0.01
        max_cumulative_number_of_payments:
          type: integer
          description: Maximum number of payments allowed in total
          minimum: 1
        max_cumulative_amount_per_period:
          type: number
          description: Maximum cumulative amount allowed per period
          minimum: 0.01
        max_cumulative_number_of_payments_per_period:
          type: integer
          description: Maximum number of payments allowed per period
          minimum: 1
    PeriodType:
      type: string
      title: PeriodType
      description: "Defines the time period used for applying limits on a long‑lived consent. \nThis value determines how consumption limits (e.g., maximum amounts or number of payments) are calculated within each period.\n\n**Supported values:**\n- `Day` – A single calendar day (00:00 to 23:59).\n- `Week` – Seven consecutive days.\n- `Month` – A full calendar month (from the 1st to the last day).\n- `Year` – A full calendar year (12 consecutive months)."
      enum:
      - Day
      - Week
      - Month
      - Year
    AddressMatchLevel:
      type: string
      title: AddressMatchLevel
      description: Level of match between delivery and billing addresses
      enum:
      - FULL_MATCH
      - PARTIAL_MATCH
      - NO_MATCH
      - NOT_APPLICABLE
    ChannelType:
      type: string
      description: Where the payment has been initiated from
      enum:
      - WEB
      - MOBILE
    DebtorIndicators:
      title: DebtorIndicators
      type: object
      description: Debtor (User) Indicators
      properties:
        authentication:
          $ref: '#/components/schemas/Authentication'
        user_name:
          $ref: '#/components/schemas/Name'
        geo_location:
          $ref: '#/components/schemas/GeoLocation'
        device_information:
          $ref: '#/components/schemas/DeviceInformation'
        biometric_capabilities:
          $ref: '#/components/schemas/BiometricCapabilities'
        app_information:
          $ref: '#/components/schemas/AppInformation'
        browser_information:
          $ref: '#/components/schemas/BrowserInformation'
        user_behavior:
          $ref: '#/components/schemas/UserBehavior'
        account_risk_indicators:
          $ref: '#/components/schemas/AccountRiskIndicators'
        supplementary_data:
          type: object
          description: Additional information that cannot be captured in the structured fields and/or any other specific block. This may include information that is not available in the structured fields, such as a user's behavioural data like their typing speed and typing patterns.
    Currency:
      type: string
      pattern: ^[A-Z]{3}$
      description: The ISO 3 letter currency code.
      example: AED
    TouchSupport:
      title: TouchSupport
      type: object
      properties:
        supported:
          type: boolean
        max_touch_points:
          type: integer
    DeviceManufacturer:
      title: DeviceManufacturer
      type: object
      properties:
        model:
          type: string
        manufacturer:
          type: string
    Authentication:
      title: Authentication
      description: The authentication method used by the User to access their account
      type: object
      properties:
        authentication_channel:
          $ref: '#/components/schemas/ChannelType'
        possession_factor:
          $ref: '#/components/schemas/PossessionFactor'
        knowledge_factor:
          $ref: '#/components/schemas/KnowledgeFactor'
        inherence_factor:
          $ref: '#/components/schemas/InherenceFactor'
        challenge_outcome:
          type: string
          enum:
          - PASS
          - FAIL
          - NOT_PERFORMED
        authentication_flow:
          type: string
          enum:
          - MFA
          - OTHER
        authentication_value:
          type: string
          description: Cryptographic proof of authentication where supported by the device and protocol.
        challenge_date_time:
          type: string
          format: date-time
    MerchantRisk:
      title: MerchantRisk
      type: object
      required:
      - delivery_timeframe
      - reorder_items_indicator
      - pre_order_purchase_indicator
      - is_gift_card_purchase
      - is_deliver_address_matching_billing
      - address_match_level
      properties:
        delivery_timeframe:
          $ref: '#/components/schemas/DeliveryTimeframe'
        reorder_items_indicator:
          $ref: '#/components/schemas/ReorderItemsIndicator'
        pre_order_purchase_indicator:
          $ref: '#/components/schemas/PreOrderPurchaseIndicator'
        is_gift_card_purchase:
          type: boolean
          description: Indicates if the transaction includes a gift card
        is_delivery_address_matching_billing:
          type: boolean
          description: Indicates if delivery address matches billing address
        address_match_level:
          $ref: '#/components/schemas/AddressMatchLevel'
    CurrencyAmount:
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          type: number
      required:
      - currency
      - amount
    UserBehavior:
      title: UserBehavior
      type: object
      properties:
        scroll_behavior:
          $ref: '#/components/schemas/ScrollBehavior'
    BrowserInformation:
      title: BrowserInformation
      type: object
      description: Browser-specific information
      properties:
        user_agent:
          description: Complete browser user agent string
          type: string
        is_cookies_enabled:
          description: Whether cookies are enabled in the browser.
          type: boolean
        available_fonts:
          description: List of available fonts.
          type: array
          items:
            type: string
        plugins:
          description: List of installed browser plugins.
          type: array
          items:
            type: string
        pixel_ratio:
          description: Device pixel ratio for scaling.
          type: number
          format: double
    TransactionHistory:
      title: TransactionHistory
      type: object
      properties:
        last_day:
          type: integer
          description: Total transactions made by the account in the last 24 hours.
        last_year:
          type: integer
          description: Total transactions made by the account in the past year.
    ConnectionType:
      type: string
      title: ConnectionType
      enum:
      - WIFI
      - CELLULAR
      - OTHER
    Name:
      type: object
      properties:
        en:
          type: string
        ar:
          type: string
    PossessionFactor:
      title: PossessionFactor
      description: The User's possession, that only the User possesses
      type: object
      properties:
        is_used:
          type: boolean
        type:
          type: string
          enum:
          - FIDO2_SECURITY_KEY
          - PASSKEY
          - OTP_DEVICE
          - OTP_APP
          - SMS_OTP
          - EMAIL_OTP
          - PUSH_NOTIFICATION
          - WEBAUTHN_TOKEN
          - SECURE_ENCLAVE_KEY
          - HARDWARE_OTP_KEY
          - TRUSTED_DEVICE
          - OTHER
    GeoLocation:
      title: GeoLocation
      description: GPS to identify and track the whereabouts of the connected electronic device.
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    MotionSensors:
      title: MotionSensors
      type: object
      properties:
        status:
          type: string
          enum:
          - IN_MOTION
          - STATIONARY
        accelerometer:
          type: boolean
        gyroscope:
          type: boolean
    TransactionIndicators:
      title: TransactionIndicators
      type: object
      required:
      - channel
      properties:
        is_customer_present:
          type: boolean
          description: This field differentiates between automatic and manual initiation.
        is_contract_present:
          type: boolean
          description: Indicates if the Creditor has a contractual relationship.
        channel:
          $ref: '#/components/schemas/ChannelType'
        channel_type:
          description: The channel through which the transaction is being conducted.
          type: string
          enum:
          - ECOMMERCE
          - IN_STORE
          - IN_APP
          - TE

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lean-technologies/refs/heads/main/openapi/lean-technologies-account-on-file-api-openapi.yml