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

# Update associated individual

> Updates an associated individual's information for a business application (UBO, control person, or applicant).
Can only be called when the application status is 'pending'.




## OpenAPI

````yaml /openapi.yaml put /applications/{application_id}/associated-individuals/{individual_id}
openapi: 3.0.3
info:
  title: Dakota Platform API
  version: 1.0.0
  description: >-
    Combined API specification for Dakota Platform services:

    - Issuance API: Asset minting and burning operations

    - Onboarding API: Know Your Business/Customer verification

    - On/Off Ramp API: Managing on-ramp and off-ramp accounts

    - Recipients API: Managing destinations for KYB'd entities

    - Transactions API: Viewing transaction history across platform operations


    ## Authentication and API Headers


    All API endpoints require the following headers:


    - `x-idempotency-key`: Required for all POST endpoints to ensure request
    idempotency

    - `x-api-key`: Required for authentication across all endpoints


    Note: On /applications endpoints you need a token for authentication instead
    of a x-api-key

    - `x-application-token`: Required for authentication on public /applications
    endpoints (alternative to `x-api-key` where documented)



    ## Rate Limits


    Requests are rate limited per API key. Every response includes the following
    headers:


    | Header | Description |

    | --- | --- |

    | `X-RateLimit-Limit` | Maximum requests allowed in the current one-minute
    window. |

    | `X-RateLimit-Remaining` | Requests remaining in the current window. |

    | `X-RateLimit-Reset` | Absolute Unix timestamp (seconds since epoch) when
    the current rate-limit window resets. |


    When a request is throttled (`429`), responses also include `Retry-After`
    with seconds to wait before retrying.
servers:
  - url: https://api.platform.dakota.xyz
    description: Production environment
  - url: https://api.platform.sandbox.dakota.xyz
    description: Sandbox — safe for testing with simulated data
security:
  - ApiKeyAuth: []
tags:
  - name: Agentic Payments
    x-alpha: true
    description: >-
      Alpha — agent-driven payments: provision agents, draft and approve
      spending mandates, accept reviewed instructions, and manage scheduled
      payments.


      **Prerequisites:** Customer onboarded; signer groups attached for
      recognition.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Mandates
    x-alpha: true
    description: >-
      Alpha — spending mandates: signed, signer-bound authorizations governing
      what may be spent, approved or cancelled by a second recognized signer (§8
      — the dual-control rule that every mandate mutation must be signed by a
      recognized signer OTHER than the bound one). Independent of agents and
      scheduled payments.


      **Prerequisites:** Signer groups attached for recognition.

      **Related:** Signer Groups, Transactions
  - name: Insights
    x-alpha: true
    description: >-
      Alpha — read-only account insight: a deterministic report over a
      customer's agentic activity (funding balances, upcoming obligations,
      failures, mandate headroom and expiry) plus an advisory chat that narrates
      it. Never moves money, never creates or changes anything.


      **Prerequisites:** Customer onboarded; insight is computed from the
      customer's scheduled payments, mandates, and wallets.

      **Related:** Agentic Payments, Mandates
  - name: Customers
    description: >-
      Manage customer entities representing businesses and organizations
      onboarded to Dakota.


      **Prerequisites:** Complete KYB via Onboarding endpoints before initiating
      money movement.

      **Related:** Onboarding, Recipients, Transactions, Accounts, Wallets
  - name: Wallets
    description: >-
      Manage wallets, balances, and wallet-to-signer-group relationships for
      custody and movement controls.


      **Prerequisites:** Customer must exist. Configure signer groups before
      policy-enforced workflows.

      **Related:** Signer Groups, Policies, Transactions, Customers
  - name: Transactions
    description: >-
      Create, cancel, and retrieve transaction records across account and wallet
      flows.


      **Prerequisites:** Accounts or destinations must be configured based on
      flow type.

      **Related:** Accounts, Recipients, Policies, Events
  - name: Recipients
    description: >-
      Manage recipient entities and destination rails used by customers for
      payouts and transfers.


      **Prerequisites:** Customer must be onboarded and active.

      **Related:** Customers, Transactions, Accounts, Onboarding
  - name: Accounts
    description: >-
      Manage account resources used for onramp, offramp, and swap operations.


      **Prerequisites:** Customer must be created and network/asset constraints
      must be known.

      **Related:** Customers, Transactions, Auto Transactions, Info
  - name: Auto Transactions
    description: >-
      Manage automated transaction configurations and execution history for
      account automation workflows.


      **Prerequisites:** Source account must exist and be configured for
      automation.

      **Related:** Accounts, Transactions, Events
  - name: Onboarding
    description: >-
      Manage KYB/KYC onboarding lifecycle, application documents, attestations,
      and verification steps.


      **Prerequisites:** Customer context and required entity/application
      metadata.

      **Related:** Customers, Exceptions, Recipients, Transactions
  - name: Policies
    description: >-
      Define and manage policy objects and rules used for transaction governance
      and risk controls.


      **Prerequisites:** Wallet and signer group resources should be configured
      for enforcement scenarios.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Signer Groups
    description: >-
      Manage signer groups and signer assignments for multi-party authorization
      models.


      **Prerequisites:** Wallets should exist before linking signer groups.

      **Related:** Wallets, Policies, Transactions
  - name: Authentication
    description: >-
      Manage API authentication credentials and key lifecycle for platform
      access.


      **Prerequisites:** Client organization must be provisioned.

      **Related:** Users, Info
  - name: Users
    description: >-
      Manage client users, roles, and identity metadata for platform access
      control.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Authentication
  - name: Webhooks
    description: >-
      Manage outbound webhook targets and delivery configuration for event
      notifications.


      **Prerequisites:** Subscriber endpoint must be reachable and secured.

      **Related:** Events, Authentication
  - name: Payouts
    description: >-
      Manage where Dakota sends your accrued developer-fee payouts.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Events
  - name: Events
    description: >-
      Retrieve event records emitted by platform operations for audit and
      troubleshooting.


      **Prerequisites:** Requesting client must have access to referenced
      resources.

      **Related:** Webhooks, Transactions, Onboarding
  - name: Info
    description: >-
      Read platform capability metadata, such as supported rails, networks, and
      assets.


      **Prerequisites:** Valid authentication headers.

      **Related:** Accounts, Transactions
  - name: Sandbox
    description: >-
      Trigger sandbox-only simulation endpoints for safe end-to-end integration
      testing with synthetic data. The sandbox host
      (`https://api.platform.sandbox.dakota.xyz`) also accepts a family of
      `X-Sandbox-*` request headers on most write endpoints (`Customers`,
      `Accounts`, `Transactions`, simulate endpoints) that let integrators drive
      deterministic failure modes — pick a preset via `X-Sandbox-Scenario`, or
      compose a custom one with
      `X-Sandbox-Error-Step`/`X-Sandbox-Error-Status`/`X-Sandbox-Error-Message`.
      `X-Sandbox-Instant-Completion` collapses async flows to a single
      synchronous step, and `X-Sandbox-Skip-Auto-Approval` keeps newly created
      KYB applications in `pending` for manual-review testing. All `X-Sandbox-*`
      headers are ignored in production.


      **Prerequisites:** Sandbox environment and test customer data.

      **Related:** Customers, Accounts, Transactions, Onboarding
paths:
  /applications/{application_id}/associated-individuals/{individual_id}:
    put:
      tags:
        - Onboarding
      summary: Update associated individual
      description: >
        Updates an associated individual's information for a business
        application (UBO, control person, or applicant).

        Can only be called when the application status is 'pending'.
      operationId: updateAssociatedIndividual
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyHeader'
        - name: application_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/KSUID'
        - name: individual_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/KSUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IndividualRequest'
            example:
              roles:
                - ubo
                - control_person
              name:
                first: John
                middle: Michael
                last: Doe
              title: ceo
              employment_status: employed
              ownership_percentage: 25.5
              date_of_birth: '1985-06-15'
              ssn: 123-45-6789
              nationalities:
                - US
              address:
                street1: 123 Main St
                street2: Apt 4B
                street3: Building C
                city: San Francisco
                region: California
                postal_code: '94105'
                country: US
              email_address: john.doe@acme.com
              purpose_of_account:
                - investing
                - storage_of_funds_or_digital_assets
              source_of_wealth:
                - employment
                - savings
      responses:
        '200':
          description: Associated individual updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssociatedIndividualResponse'
              example:
                application_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                application_status: pending
                application_decision: approved
                individual:
                  id: 2hCjxJzUAW6JVRkZqaF9E0KpM3b
                  first_name: John
                  last_name: Doe
                  date_of_birth: '1985-06-15'
                  nationalities:
                    - US
                  address:
                    street1: 123 Main St
                    street2: Apt 4B
                    street3: Building C
                    city: San Francisco
                    region: California
                    postal_code: '94105'
                    country: US
                  email_address: john.doe@example.com
                  phone_number: +1-555-123-4567
                  employment_status: employed
                  purpose_of_account:
                    - investing
                    - storage_of_funds_or_digital_assets
                  source_of_wealth:
                    - employment
                    - savings
                  decision: approved
                  decision_reason: All verification checks passed
                  decision_by: admin@dakota.xyz
                  decision_at: 1705315800
                  sumsub_verification:
                    applicant_id: 2hCjxJzUAW6JVRkZqaF9E0KpM3b
                    provider_applicant_id: 65a1b2c3d4e5f6g7h8i9j0k1
                    entity_type: individual
                    type: individual
                    decision: approved
                    decision_reason: All verification checks passed
                    decision_by: admin@dakota.xyz
                    decision_at: 1705315800
                    review:
                      review_id: 65a1b2c3d4e5f6g7h8i9j0k1
                      attempt_id: 65a1b2c3d4e5f6g7h8i9j0k2
                      attempt_cnt: 1
                      level_name: basic-kyc-level
                      create_date: '2024-01-15T10:30:00Z'
                      review_date: '2024-01-15T14:45:00Z'
                      review_status: completed
                      review_result:
                        review_answer: GREEN
                        reject_labels:
                          - DOCUMENT_TEMPLATE
                          - FRAUDULENT_PATTERNS
                        reject_type: FINAL
                        button_ids:
                          - approve
                        moderation_comment: All documents verified successfully
                        client_comment: Approved for onboarding
                    risk_labels:
                      device:
                        - EMULATOR
                        - VPN
                      cross_check:
                        - FAKE_ID
                        - BLACKLIST
                      attempt_id: 65a1b2c3d4e5f6g7h8i9j0k2
                      created_at: '2024-01-15T10:30:00Z'
                  roles:
                    - ubo
                    - control_person
                  ownership_percentage: 25.5
                  title: CEO
        '400':
          description: Invalid request or validation errors
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#invalid-request
                title: Invalid request or validation errors
                status: 400
                detail: Invalid request or validation errors
                instance: >-
                  https://api.platform.dakota.xyz/applications/example-id/associated-individuals/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: >-
                  https://docs.dakota.xyz/api-reference/errors#authentication-error
                title: Unauthorized
                status: 401
                detail: Unauthorized
                instance: >-
                  https://api.platform.dakota.xyz/applications/example-id/associated-individuals/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '403':
          description: Application not in pending state or forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#forbidden
                title: Application not in pending state or forbidden
                status: 403
                detail: Application not in pending state or forbidden
                instance: >-
                  https://api.platform.dakota.xyz/applications/example-id/associated-individuals/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '404':
          description: Application or individual not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#not-found
                title: Application or individual not found
                status: 404
                detail: Application or individual not found
                instance: >-
                  https://api.platform.dakota.xyz/applications/example-id/associated-individuals/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
      security:
        - ApplicationTokenAuth: []
      externalDocs:
        description: Read full guide in docs
        url: >-
          https://docs.dakota.xyz/api-reference/onboarding/update-associated-individual
components:
  parameters:
    IdempotencyKeyHeader:
      name: x-idempotency-key
      in: header
      required: true
      description: >-
        Unique key to ensure request idempotency. If the same key is used within
        a certain time window, the original response will be returned instead of
        executing the request again.
      schema:
        type: string
        format: uuid
  schemas:
    KSUID:
      type: string
      title: KSUID
      description: >-
        KSUID is a 27-character globally unique ID that combines a timestamp
        with a random component. Used for all entity identifiers in the Dakota
        platform.
      pattern: ^[0-9A-Za-z]{27}$
      minLength: 27
      maxLength: 27
      example: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
    IndividualRequest:
      type: object
      description: >-
        An individual person (used for both business associated persons and
        standalone individual applications)
      required:
        - roles
        - name
        - date_of_birth
        - nationalities
        - address
        - email_address
      properties:
        roles:
          type: array
          description: >-
            Role(s) of this person (individual cannot be combined with other
            types)
          minItems: 1
          items:
            type: string
            enum:
              - ubo
              - control_person
              - applicant
              - individual
          example:
            - ubo
            - control_person
        name:
          $ref: '#/components/schemas/PersonName'
        title:
          type: string
          description: >-
            Job title (required for UBO/control person, optional for applicant,
            invalid for individual)
          enum:
            - ceo
            - coo
            - cfo
            - cto
            - cco
            - director
            - other_officer
          example: ceo
        employment_status:
          type: string
          description: Employment status (required only when roles includes 'individual')
          enum:
            - employed
            - self_employed
            - unemployed
            - student
            - retired
          example: employed
        ownership_percentage:
          type: number
          format: double
          description: >-
            Ownership percentage (required for UBO role, optional for others,
            must be > 0 and <= 100)
          minimum: 0.01
          maximum: 100
          example: 25.5
        date_of_birth:
          type: string
          format: date
          description: >-
            Date of birth (ISO 8601 format, person must be at least 18 years
            old)
          example: '1985-06-15'
        ssn:
          type: string
          description: >-
            Social Security Number (required for US persons, format:
            XXX-XX-XXXX)
          pattern: ^\d{3}-\d{2}-\d{4}$
          example: 123-45-6789
        nationalities:
          type: array
          description: ISO 3166-1 alpha-2 country codes for nationalities
          minItems: 1
          items:
            type: string
            minLength: 2
            maxLength: 2
          example:
            - US
        address:
          $ref: '#/components/schemas/Address'
        email_address:
          type: string
          format: email
          description: Email address (cannot use example or test domains)
          example: john.doe@acme.com
        purpose_of_account:
          type: array
          description: >-
            Intended purposes for the account (required when roles includes
            'individual')
          minItems: 1
          items:
            type: string
            enum:
              - investing
              - sending_and_receiving_payments
              - storage_of_funds_or_digital_assets
              - making_online_payments
              - trading_on_other_platforms
          example:
            - investing
            - storage_of_funds_or_digital_assets
        source_of_wealth:
          type: array
          description: Sources of wealth (required when roles includes 'individual')
          minItems: 1
          items:
            type: string
            enum:
              - investments
              - employment
              - court_settlement
              - lottery_winnings
              - retirement_income
              - savings
              - sale_of_assets
              - family_funds
              - gambling_winnings
              - gift
              - inheritance
              - insurance_claim
              - loan
              - redundancy_severance
              - benefits
          example:
            - employment
            - savings
    AssociatedIndividualResponse:
      type: object
      description: >-
        Response containing associated individual entity data with application
        context
      required:
        - application_id
        - application_status
        - application_decision
        - individual
      properties:
        application_id:
          $ref: '#/components/schemas/KSUID'
          description: The application ID
        application_status:
          $ref: '#/components/schemas/ApplicationStatus'
          description: Current status of the application
        application_decision:
          type: string
          enum:
            - approved
            - declined
            - withdrawn
          nullable: true
          description: Decision outcome (if any)
        individual:
          $ref: '#/components/schemas/AssociatedIndividualEntity'
          description: The associated individual entity data
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
      description: |
        Error response following RFC 9457 Problem Details.
        Public API error responses use this format.
      example:
        type: https://docs.dakota.xyz/api-reference/errors#not-found
        title: Customer Not Found
        status: 404
        detail: Customer cst_2abc123 was not found in your organization.
        instance: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id: req_7f3a8b2c
      properties:
        type:
          type: string
          format: uri
          description: |
            URI reference identifying the problem type.
            Resolves to human-readable documentation.
          example: https://docs.dakota.xyz/api-reference/errors#not-found
        title:
          type: string
          description: >-
            Short, human-readable summary of the problem type. Stable across
            occurrences.
          example: Customer Not Found
        status:
          type: integer
          description: HTTP status code for this occurrence.
          example: 404
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: Customer cst_2abc123 was not found in your organization.
        instance:
          type: string
          format: uri
          description: The request path that triggered this error.
          example: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id:
          type: string
          description: Unique request identifier. Include when contacting support.
          example: req_7f3a8b2c
        errors:
          type: array
          description: Field-level validation errors (present for validation failures).
          items:
            $ref: '#/components/schemas/ValidationError'
    PersonName:
      type: object
      description: Full name of a person
      required:
        - first
        - last
      properties:
        first:
          type: string
          description: First name
          example: John
        middle:
          type: string
          description: Middle name (optional)
          example: Michael
        last:
          type: string
          description: Last name
          example: Doe
    Address:
      type: object
      title: Address
      description: >-
        Standardized physical address format used throughout the Dakota platform
        for user and entity addresses.
      required:
        - street1
        - city
        - country
      properties:
        street1:
          type: string
          description: Primary street address line
          example: 123 Main St
        street2:
          type: string
          description: >-
            Secondary address information such as apartment, suite, or unit
            number
          example: Apt 4B
        street3:
          type: string
          description: Additional address information like building name or floor
          example: Building C
        city:
          type: string
          description: City or locality name
          example: San Francisco
        region:
          type: string
          description: Full name of state, province, or region
          example: California
        postal_code:
          type: string
          description: Postal or ZIP code
          example: '94105'
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code (two-letter country code)
          example: US
          minLength: 2
          maxLength: 2
    ApplicationStatus:
      type: string
      title: Application Status
      description: >
        Current status of an application in the onboarding flow.


        Status flow:

        - `pending` - Initial state, not yet submitted

        - `submitted` - Submitted for verification

        - `under_review` - Being reviewed by compliance team

        - `request_for_information` - Admin requesting additional info/documents
        from applicant

        - `admin_revision` - Admin making corrections to application data

        - `approved` - Application approved

        - `declined` - Application declined

        - `completed` - Legacy status (deprecated, use approved/declined
        instead)

        - `compliance_review` - Application is awaiting compliance review of a
        Proof of Address
          document. Set when an individual applicant uploads a PoA-equivalent document
          (proof_of_address, bank_statement, or utility_bill) after their application has
          already been approved or completed. The customer remains active but is subject to
          the $3,000 USD-equivalent rolling 7-day transaction limit until the review concludes.
      enum:
        - pending
        - submitted
        - under_review
        - request_for_information
        - admin_revision
        - approved
        - declined
        - completed
        - compliance_review
      example: submitted
    AssociatedIndividualEntity:
      allOf:
        - $ref: '#/components/schemas/IndividualEntity'
        - type: object
          description: >-
            Individual associated with a business (extends IndividualEntity with
            role information)
          required:
            - roles
          properties:
            roles:
              type: array
              description: Role(s) of this individual in relation to the business
              items:
                type: string
                enum:
                  - ubo
                  - control_person
                  - authorized_representative
                  - applicant
              minItems: 1
              example:
                - ubo
                - control_person
            ownership_percentage:
              type: number
              format: double
              description: Ownership percentage (optional, typically provided for UBO role)
              minimum: 0
              maximum: 100
              example: 25.5
            title:
              type: string
              description: Job title
              example: CEO
    ValidationError:
      type: object
      required:
        - field
        - message
      properties:
        field:
          type: string
          description: Field path using dot notation for nested fields.
          example: bank_account.routing_number
        message:
          type: string
          description: Human-readable description of the field error.
          example: Routing number must be exactly 9 digits
        code:
          type: string
          description: Machine-readable error code for this field.
          example: invalid_format
    IndividualEntity:
      type: object
      description: Individual entity data (entity information only, no validation)
      required:
        - id
        - first_name
        - last_name
        - date_of_birth
        - nationalities
        - address
        - email_address
      properties:
        id:
          type: string
          format: ksuid
          description: >-
            Individual applicant identifier (this is the applicant_id, NOT the
            internal individual entity ID)
          example: 2hCjxJzUAW6JVRkZqaF9E0KpM3b
        first_name:
          type: string
          description: First name
          example: John
        last_name:
          type: string
          description: Last name
          example: Doe
        date_of_birth:
          type: string
          format: date
          description: Date of birth
          example: '1985-06-15'
        nationalities:
          type: array
          description: ISO 3166-1 alpha-2 country codes for nationalities
          minItems: 1
          items:
            type: string
            minLength: 2
            maxLength: 2
          example:
            - US
        address:
          $ref: '#/components/schemas/Address'
          description: Residential address
        email_address:
          type: string
          description: >-
            Email address. May be empty if the applicant has not provided one
            yet.
          example: john.doe@example.com
        phone_number:
          type: string
          description: Phone number (optional)
          example: +1-555-123-4567
        employment_status:
          type: string
          description: Employment status (for individual person type only)
          enum:
            - employed
            - self_employed
            - unemployed
            - student
            - retired
          example: employed
        purpose_of_account:
          type: array
          description: Intended purposes for the account (for individual person type only)
          items:
            type: string
            enum:
              - investing
              - sending_and_receiving_payments
              - storage_of_funds_or_digital_assets
              - making_online_payments
              - trading_on_other_platforms
          example:
            - investing
            - storage_of_funds_or_digital_assets
        source_of_wealth:
          type: array
          description: Sources of wealth (for individual person type only)
          items:
            type: string
            enum:
              - investments
              - employment
              - court_settlement
              - lottery_winnings
              - retirement_income
              - savings
              - sale_of_assets
              - family_funds
              - gambling_winnings
              - gift
              - inheritance
              - insurance_claim
              - loan
              - redundancy_severance
              - benefits
          example:
            - employment
            - savings
        ssn:
          type: string
          description: >-
            Social Security Number (only present for US persons, format
            XXX-XX-XXXX)
          pattern: ^\d{3}-\d{2}-\d{4}$
          example: 123-45-6789
        decision:
          type: string
          enum:
            - approved
            - declined
            - auto_declined
            - withdrawn
          nullable: true
          description: Decision on this individual entity (if made)
          example: approved
        decision_reason:
          type: string
          nullable: true
          description: Reason for the decision
          example: All verification checks passed
        decision_by:
          type: string
          nullable: true
          description: Email of admin who made the decision
          example: admin@dakota.xyz
        decision_at:
          type: integer
          format: int64
          nullable: true
          description: Unix timestamp when decision was made
          example: 1705315800
        sumsub_verification:
          $ref: '#/components/schemas/SumsubReviewData'
          description: Sumsub verification data for this individual entity
    SumsubReviewData:
      type: object
      description: Sumsub review information for a specific entity
      required:
        - applicant_id
        - provider_applicant_id
        - entity_type
      properties:
        applicant_id:
          type: string
          format: ksuid
          description: >-
            Dakota applicant ID (business_applicant_id or
            individual_applicant_id)
          example: 2hCjxJzUAW6JVRkZqaF9E0KpM3b
        provider_applicant_id:
          type: string
          description: Sumsub's applicant ID
          example: 65a1b2c3d4e5f6g7h8i9j0k1
        entity_type:
          type: string
          enum:
            - business
            - individual
          description: Type of entity
          example: individual
        type:
          type: string
          description: Sumsub applicant type (e.g., 'company', 'individual')
          example: individual
        decision:
          type: string
          enum:
            - approved
            - declined
            - auto_declined
            - withdrawn
          nullable: true
          description: Current decision from Dakota database
          example: approved
        decision_reason:
          type: string
          nullable: true
          description: Reason for the decision
          example: All verification checks passed
        decision_by:
          type: string
          nullable: true
          description: Email of user who made the decision
          example: admin@dakota.xyz
        decision_at:
          type: integer
          format: int64
          nullable: true
          description: Unix timestamp when decision was made
          example: 1705315800
        review:
          $ref: '#/components/schemas/SumsubReview'
          description: Sumsub verification review details
        risk_labels:
          $ref: '#/components/schemas/SumsubRiskLabels'
          description: Risk labels identified by Sumsub
    SumsubReview:
      type: object
      description: Sumsub verification review details
      properties:
        review_id:
          type: string
          description: Unique review identifier
          example: 65a1b2c3d4e5f6g7h8i9j0k1
        attempt_id:
          type: string
          description: Verification attempt identifier
          example: 65a1b2c3d4e5f6g7h8i9j0k2
        attempt_cnt:
          type: integer
          description: Number of verification attempts
          example: 1
        level_name:
          type: string
          description: Verification level name
          example: basic-kyc-level
        create_date:
          type: string
          description: When review was created (ISO 8601)
          example: '2024-01-15T10:30:00Z'
        review_date:
          type: string
          nullable: true
          description: When review was completed (ISO 8601)
          example: '2024-01-15T14:45:00Z'
        review_status:
          type: string
          enum:
            - init
            - pending
            - prechecked
            - queued
            - completed
            - onHold
          description: Current status of the review
          example: completed
        review_result:
          $ref: '#/components/schemas/SumsubReviewResult'
          description: Sumsub review result details
    SumsubRiskLabels:
      type: object
      description: Risk labels identified by Sumsub
      properties:
        device:
          type: array
          items:
            type: string
          description: Device-related risk indicators
          example:
            - EMULATOR
            - VPN
        cross_check:
          type: array
          items:
            type: string
          description: Cross-check risk indicators
          example:
            - FAKE_ID
            - BLACKLIST
        attempt_id:
          type: string
          description: Associated attempt ID
          example: 65a1b2c3d4e5f6g7h8i9j0k2
        created_at:
          type: string
          description: When risk labels were created
          example: '2024-01-15T10:30:00Z'
    SumsubReviewResult:
      type: object
      description: Sumsub review result details
      properties:
        review_answer:
          type: string
          enum:
            - GREEN
            - RED
            - YELLOW
          description: Review outcome (GREEN = passed, RED = failed, YELLOW = needs review)
          example: GREEN
        reject_labels:
          type: array
          items:
            type: string
          description: Reasons for rejection if review_answer is RED
          example:
            - DOCUMENT_TEMPLATE
            - FRAUDULENT_PATTERNS
        reject_type:
          type: string
          description: Type of rejection
          example: FINAL
        button_ids:
          type: array
          items:
            type: string
          description: IDs of buttons clicked during review
          example:
            - approve
        moderation_comment:
          type: string
          description: Comment from Sumsub moderator
          example: All documents verified successfully
        client_comment:
          type: string
          description: Client comment on the review
          example: Approved for onboarding
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
    ApplicationTokenAuth:
      type: apiKey
      in: header
      name: X-Application-Token
      description: >
        Application-specific token for public URL access. Generated when a
        customer is created.

        Provides access to a single application without requiring an API key.

        Token is valid for 30 days and rate-limited to 250 requests per hour.

````