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

# استيراد الجلسة المشتركة API: KYC القابل لإعادة الاستخدام

> استيراد جلسة KYC أو KYB عبر POST /v3/session/import-shared/ في Didit برمز مشاركة من شريك. هوية قابلة لإعادة الاستخدام بلا إعادة تحقق، وتسعير حسب الاستخدام.



موجّه استيراد الجلسة المشتركة
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Import a verification session shared by a partner application (Reusable KYC / KYB).

Endpoint:
POST https://verification.didit.me/v3/session/import-shared/

Authentication:
Use the x-api-key header with the receiving application's Didit API key. Privilege: write:sessions.

Request body:
\- share_token (string, required) — JWT minted by the partner via POST /v3/session/{id}/share/. Didit decodes it, reads the embedded session_kind, and clones the matching kind.
\- workflow_id (string, UUID, required) — Workflow in YOUR application to attach the imported session to. KYC token → pass a KYC workflow_id. KYB token → pass a KYB workflow_id.
\- vendor_data (string, optional) — Your stable identifier for the entity. Auto-creates a User or Business entity if it does not already exist.
\- trust_review (boolean, optional, default false) — false → imported session lands in "In Review" so your team can re-review. true → imported session preserves the original status (e.g. "Approved"). Use true only when you fully trust the sharing partner's decision.

curl example:
curl -X POST https://verification.didit.me/v3/session/import-shared/ \
-H "x-api-key: <RECEIVING_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"share_token": "<JWT_FROM_PARTNER>",
"workflow_id": "<YOUR_WORKFLOW_ID>",
"vendor_data": "partner-user-42",
"trust_review": false
}'

Response (201 Created):
\- session_id (UUID) — NEW UUID minted in your application.
\- session_kind ("user" | "business") — same as the original.
\- session_number — fresh sequence in your application.
\- status — original status (if trust_review=true) or "In Review" (if trust_review=false).
\- shared_from_session — pointer to the original session in the source application.
\- vendor_data, workflow_id — what you sent.
\- All cloned feature arrays: KYC tokens clone id_verifications + liveness_checks + face_matches + face + AML + location + POA + phone + email + database_validations + logs; KYB tokens clone registry_checks + key_people_checks + document_verifications + AML + phone + email + location + questionnaire + logs.

Backward compatibility:
Tokens minted before the unified-sharing rollout (no session_kind field) default to "user" when decoded.

Idempotency:
Importing the same share_token twice into the same application is rejected with 403, for user and business sessions alike.

Failure modes:
\- 400 - { "share_token": ["Invalid share token."] } when the token is malformed or was not issued by Didit.
\- 400 - { "share_token": ["Share token has expired."] } when its exp has passed.
\- 400 - { "share_token": ["This token is not valid for this application."] } when the token was issued for another application.
\- 400 - { "share_token": ["Original session does not exist."] } when the shared session was deleted.
\- 403 - { "detail": "This session has already been shared with your application." } when the session was already imported into this application.
\- 404 - { "detail": "Workflow does not exist for this application." } when workflow_id is not a workflow of your application.

When to call:
\- Cross-organization Reusable KYC (bank → fintech, marketplace → payment provider, etc.).
\- Promoting a verified user from your sandbox application to your production application.
\- Group-company sharing across sibling applications.

After import:
\- The new session works like any other session — fetch with GET /v3/session/{session_id}/decision/ (see /sessions-api/retrieve-session) and react to status / data webhooks.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

الصق في

## دعم KYC وKYBيفكّ Didit ترميز رمز المشاركة، ويستخرج منه القيمة `session_kind`، ثم ينسخ نوع الجلسة المقابل:- `session_kind: "user"`: ينسخ جلسة المستخدم مع صفوف الهوية والوجه وكشف الحيوية ومطابقة الوجه وAML والموقع وإثبات العنوان والهاتف والبريد الإلكتروني والتحقق من قواعد البيانات والسجلات المرتبطة بها.
- `session_kind: "business"`: ينسخ جلسة الشركة مع صفوف فحص سجل الشركات وسجلات الأشخاص الرئيسيين والمستندات وفحوصات AML والهاتف والبريد الإلكتروني والموقع والاستبيان والسجلات المرتبطة بها.إذا كان الرمز أقدم من طرح المشاركة الموحّد ولا يحتوي على الحقل `session_kind`، فإن Didit يعتمد القيمة `"user"` افتراضياً للحفاظ على التوافق مع الإصدارات السابقة.## ما الذي يتم إنشاؤه- **جلسة جديدة** من النوع نفسه في تطبيقك، بقيم جديدة لـ `session_id` و`session_number` و`session_url`.
- يشير الحقل `shared_from_session` في الجلسة الجديدة إلى الجلسة الأصلية في تطبيق المصدر.
- حالة الجلسة الجديدة هي الحالة الأصلية نفسها (`trust_review: true`) أو `IN_REVIEW` (`trust_review: false`).
- يتم إنشاء كيان جديد (مستخدم أو شركة) تلقائياً لبيانات `vendor_data` إذا لم يكن موجوداً.## الأمثلة> [tab] استيراد جلسة التحقق من المستخدمين (KYC)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyc-workflow-id",
>     "vendor_data": "partner-user-42",
>     "trust_review": false
>   }'
> ```
>
> **الاستجابة (201 تم الإنشاء):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "user",
>   "shared_from_session": "original-uuid",
>   "status": "In Review",
>   "vendor_data": "partner-user-42",
>   "id_verifications": [...],
>   "liveness_checks": [...],
>   "...": "..."
> }
> ```> [tab] استيراد جلسة التحقق من الشركات (KYB)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyb-workflow-id",
>     "vendor_data": "partner-biz-acme",
>     "trust_review": true
>   }'
> ```
>
> **الاستجابة (201 تم الإنشاء):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "business",
>   "shared_from_session": "original-uuid",
>   "status": "Approved",
>   "vendor_data": "partner-biz-acme",
>   "registry_checks": [...],
>   "key_people_checks": [...],
>   "document_verifications": [...],
>   "...": "..."
> }
> ```## معامل `trust_review`| القيمة | الأثر |
| - | - |
| `true` | تحتفظ الجلسة المستوردة بالحالة الأصلية (مثل `APPROVED`). استخدم هذا الخيار عندما تثق ثقة كاملة بقرار الشريك المُشارِك. |
| `false` | تنتقل الجلسة المستوردة إلى `IN_REVIEW` ليتمكن فريقك من إعادة مراجعتها قبل اتخاذ أي إجراء. هذا هو الإعداد الافتراضي الآمن للشركاء الخارجيين. |## الأخطاء| الحالة | السبب |
| - | - |
| `400` | `share_token` غير صالح، أو منتهي الصلاحية، أو صادر لتطبيق آخر، أو يشير إلى جلسة تم حذفها. تظهر رسالة الخطأ تحت المفتاح `share_token`. |
| `403` | الجلسة مستوردة بالفعل إلى تطبيقك. |
| `404` | `workflow_id` ليس سير العمل الخاص بتطبيقك. |## idempotencyيتم رفض استيراد `share_token` نفسه مرتين إلى التطبيق نفسه برمز الحالة `403`، سواء كانت الجلسة للمستخدم أو للشركة.## مواضيع ذات صلة- [مشاركة الجلسة](https://docs.didit.me/ar/sessions-api/share-session/share.md)
- [دليل KYC القابل لإعادة الاستخدام](https://docs.didit.me/ar/core-technology/reusable-kyc/share-kyc-via-api.md)
- [نظرة عامة على الجلسات](https://docs.didit.me/ar/sessions-api/overview.md)


## OpenAPI

````yaml ar/openapi-25.json POST /v3/session/import-shared/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API التحقق من الهوية. قم بالمصادقة باستخدام الرأس x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/import-shared/:
    post:
      tags:
        - Sessions
      summary: استرداد رمز مشاركة لنسخ جلسة تحقق إلى تطبيقك
      description: >-
        استرداد رمز مشاركة لنسخ جلسة KYC أو KYB إلى التطبيق المستدعي باستخدام
        `session_id` جديد. العملية ليست idempotent — يتم استرداد الرمز مرة واحدة
        لكل مستلم.
      operationId: post_v3_session_import_shared
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - share_token
                - trust_review
                - workflow_id
              properties:
                share_token:
                  type: string
                  description: >-
                    رمز JWT للمشاركة صادر عن [`POST
                    /v3/session/{sessionId}/share/`](/sessions-api/share-session).
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                trust_review:
                  type: boolean
                  description: >-
                    إذا كانت القيمة `true`، تحتفظ الجلسة المستنسخة بالحالة
                    النهائية `status` للمصدر. وإذا كانت `false`، يتم تحويلها
                    إجبارياً إلى `In Review`.
                  example: false
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    معرّف UUID لسير العمل في التطبيق المستدعي. يتم رفض المعرّفات
                    العابرة للتطبيقات بالرمز `404`.
                  example: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                vendor_data:
                  type: string
                  nullable: true
                  description: تجاوز اختياري لـ `vendor_data` الخاصة بالجلسة المستنسخة.
                  example: user-1
            example:
              share_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              trust_review: false
              workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
              vendor_data: user-1
      responses:
        '201':
          description: >-
            تم استنساخ الجلسة. جسم الاستجابة هو payload لقرار V3 لكلا النوعين،
            ويتم التمييز بينهما بواسطة `session_kind`: النوع `"user"` (KYC) مع
            كتل ميزات قائمة على القوائم مثل `id_verifications`
            و`liveness_checks` و`aml_screenings`؛ والنوع `"business"` (KYB) مع
            كتل مثل `registry_checks` و`key_people_checks`. يتضمن كلاهما
            `shared_from_session` — معرّف الجلسة `session_id` للجلسة الأصلية في
            التطبيق المصدر. مع `trust_review: false` يتم فرض `status` للجلسة
            المستنسخة لتصبح `In Review`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDecision'
              examples:
                User session imported:
                  summary: >-
                    جلسة KYC مستنسخة (مقتطعة — في الواقع payload كامل لقرار
                    الإصدار 3)
                  value:
                    session_id: 11111111-2222-3333-4444-555555555555
                    session_kind: user
                    shared_from_session: 99999999-8888-7777-6666-555555555555
                    session_number: 43762
                    session_url: null
                    status: In Review
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: user-1
                    created_at: '2026-05-17T08:42:11Z'
                    expires_at: '2026-05-24T08:42:11Z'
                Business session imported:
                  summary: >-
                    جلسة KYB مستنسخة (مقتطعة — في الواقع payload كامل لقرار KYB
                    الإصدار 3)
                  value:
                    session_id: 22222222-3333-4444-5555-666666666666
                    session_kind: business
                    shared_from_session: 88888888-7777-6666-5555-444444444444
                    session_number: 982
                    session_url: null
                    status: Approved
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: company-1
        '400':
          description: >-
            خطأ في التحقق من الصحة (الـ token غير صالح، أو منتهي الصلاحية، أو
            الوجهة غير صحيحة، أو يشير إلى جلسة لم تعد موجودة).
          content:
            application/json:
              examples:
                Invalid Share Token:
                  summary: رمز JWT غير صالح
                  value:
                    share_token:
                      - Invalid share token.
                Expired Share Token:
                  summary: تجاوز الـ token تاريخ الانتهاء `exp`
                  value:
                    share_token:
                      - Share token has expired.
                Wrong audience:
                  summary: الـ token غير مرتبط بهذا التطبيق
                  value:
                    share_token:
                      - This token is not valid for this application.
                Original missing:
                  summary: تم حذف جلسة المصدر
                  value:
                    share_token:
                      - Original session does not exist.
        '403':
          description: >-
            مفتاح API مفقود (المفتاح الخاطئ أو الملغى أو منتهي الصلاحية يتلقى
            `401`)، أو تم استيراد جلسة المصدر هذه بالفعل إلى التطبيق الطالب
            (استرداد واحد لكل مستلِم).
          content:
            application/json:
              examples:
                Forbidden:
                  summary: محظور
                  value:
                    detail: You do not have permission to perform this action.
                Already imported:
                  summary: تم استيراد المصدر بالفعل مرة واحدة
                  value:
                    detail: >-
                      This session has already been shared with your
                      application.
        '404':
          description: لا ينتمي `workflow_id` إلى التطبيق المستدعي.
          content:
            application/json:
              examples:
                Workflow not found:
                  summary: سير العمل غير معروف
                  value:
                    detail: Workflow does not exist for this application.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/session/import-shared/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                "trust_review": false,
                "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                "vendor_data": "user-1"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.import_shared(
                share_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                trust_review=False,
                workflow_id="9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                vendor_data="user-1",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.sessions.importShared({
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ImportShared(ctx, didit.SessionsImportSharedParams{\n\tShareToken:  \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n\tTrustReview: false,\n\tWorkflowID:  \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n\tVendorData:  didit.String(\"user-1\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsImportSharedParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().importShared(SessionsImportSharedParams.builder()
                    .shareToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")
                    .trustReview(false)
                    .workflowId("9f9b1234-aaaa-bbbb-cccc-1234567890ab")
                    .vendorData("user-1")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->sessions->importShared([
                'share_token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
                'trust_review' => false,
                'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',
                'vendor_data' => 'user-1',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.sessions.import_shared(
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Sessions.ImportSharedAsync(new
            SessionsImportSharedParams

            {
                ShareToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                TrustReview = false,
                WorkflowId = "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                VendorData = "user-1",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDecision:
      type: object
      properties:
        session_id:
          type: string
          format: uuid
          description: المعرّف الفريد للجلسة.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            معرّف تمييز يوضح ما إذا كانت هذه جلسة التحقق من المستخدمين (KYC) أو
            التحقق من الشركات (KYB). عندما تكون `user`، تنطبق مصفوفات ميزات KYC
            (`id_verifications`، `nfc_verifications`، `liveness_checks`،
            `face_matches`، `poa_verifications`، `document_ai_documents`،
            `database_validations`، ...) وتغيب مصفوفات الشركات. وعندما تكون
            `business`، يحتوي الـ payload بدلاً من ذلك على `registry_checks`،
            و`document_verifications`، و`key_people_checks` بالإضافة إلى
            المصفوفات المشتركة (`aml_screenings`، `phone_verifications`،
            `email_verifications`، `ip_analyses`، `questionnaire_responses`).
            **يتم حذفه عند تمرير `include=events`** — فشكل الأحداث موجود فقط
            لجلسات المستخدمين، لذلك يُستبعد معرّف التمييز من هذا الشكل.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            للجلسة المستنسخة باستخدام `POST /v3/session/import-shared/`: قيمة
            `session_id` للجلسة الأصلية في التطبيق المصدر. وتكون `null` لكل جلسة
            أخرى. لا يتم تضمينها عند تمرير `include=events`.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            `session_number` للجلسة المصدر عند استيراد هذه الجلسة من تطبيق آخر
            تابع لمؤسستك. `null` خلاف ذلك.
        session_number:
          type: integer
          description: رقم الجلسة.
          nullable: true
        session_url:
          type: string
          format: uri
          description: رابط URL الخاص بالجلسة.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            حالة دورة الحياة الإجمالية للجلسة — النتيجة التراكمية لسير العمل.
            القيم النهائية هي `Approved` و`Declined` و`In Review` و`Expired`
            و`Kyc Expired` و`Abandoned`؛ بينما تشير `Not Started` و`In Progress`
            و`Awaiting User` و`Resubmitted` إلى أن الجلسة لا تزال تتقدم في سير
            العمل.
        status_override:
          type: object
          nullable: true
          description: >-
            موجود عندما يحدد المراجِع `status` يدوياً. يكون `null` عندما تكون
            الحالة تلقائية. استخدمه للتمييز بين الموافقة اليدوية والتلقائية.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: الحالة التي تخلص إليها الفحوصات الخاصة بالمنصة.
        decision_trace:
          type: object
          description: 'كيفية الوصول إلى الحالة: من قام بتعيينها وأي التحذيرات تسببت في ذلك.'
          properties:
            status:
              type: string
              description: حالة الجلسة.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: >-
                من قام بتعيين الحالة. `null` طالما لم يتم اتخاذ القرار بشأن
                الجلسة.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: >-
                ما تخلص إليه فحوصات المنصة نفسها، وهو ما يختلف عن `status` بعد
                اتخاذ قرار يدوي.
            terminal_node_id:
              type: string
              nullable: true
              description: عقدة حالة سير العمل التي أنهت الجلسة، في حال قامت إحداها بذلك.
            actor:
              type: object
              nullable: true
              description: المراجِع المسؤول عن القرار اليدوي.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: >-
                التحذيرات حسب `log_type` (`error`، `warning`، `information`)
                والإجمالي `total`.
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: التحذيرات التي تحدد حالة `Declined` أو `In Review`.
              items:
                type: object
                properties:
                  risk:
                    type: string
                  feature:
                    type: string
                    nullable: true
                  node_id:
                    type: string
                    nullable: true
                  log_type:
                    type: string
                    nullable: true
                  check_status:
                    type: string
                    nullable: true
                  source:
                    type: string
                    description: >-
                      قائمة payload التي ورد منها التحذير، على سبيل المثال
                      `id_verifications`.
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            ملخص لسجلات أخرى مرتبطة بالجلسة. يكون `null` عندما لا يوجد شيء
            لعرضه، ولسير العمل التي تعلن عن معيار لضمان العمر.
          properties:
            same_face:
              type: object
              nullable: true
              description: >-
                أشخاص آخرون تطابق وجههم مع إحدى عمليات البحث بالوجه في هذه
                الجلسة.
              properties:
                count:
                  type: integer
                best_match:
                  type: object
                  nullable: true
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                    similarity_percentage:
                      type: number
                      nullable: true
            earlier_verifications:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                vendor_user_id:
                  type: string
                  format: uuid
                  nullable: true
            networks:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                open:
                  type: integer
                dismissed:
                  type: integer
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      network_id:
                        type: string
                        format: uuid
                      display_number:
                        type: integer
                        nullable: true
                      name:
                        type: string
                      status:
                        type: string
                      risk_score:
                        type: number
                        nullable: true
        workflow_id:
          type: string
          format: uuid
          description: >-
            معرّف ثابت لمجموعة سير العمل التي أنتجت هذه الجلسة. لمسارات العمل
            إصدارات — وتحدد هذه القيمة سير العمل نفسه، وليس إصداراً معيناً.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: ميزة الجلسة.
          description: >-
            قائمة بميزات التحقق التي تم تكوينها لهذه الجلسة، كأسماء عرض:
            `ID_VERIFICATION`، و `NFC`، و `LIVENESS`، و `FACE_MATCH`، و `POA`، و
            `PHONE`، و `EMAIL_VERIFICATION`، و `AML`، و `IP_ANALYSIS`، و
            `DATABASE_VALIDATION`، و `QUESTIONNAIRE`، و `AGE_ESTIMATION`، و
            `FACE_SEARCH`، و `GEOLOCATION` (التحقق من الموقع) (تستخدم جلسات
            التحقق من الشركات (KYB) مجموعة ميزات KYB: `KYB_REGISTRY`، و
            `KYB_DOCUMENTS`، و `KYB_KEY_PEOPLE`، و `AML`، و `PHONE`، و
            `EMAIL_VERIFICATION`، و `IP_ANALYSIS`، و `QUESTIONNAIRE`). عند
            استخدام `include=events`، يصبح كل إدخال كائناً `{feature, node_id}`
            بدلاً من سلسلة نصية بسيطة، وتتم إعادة تسمية ميزة البريد الإلكتروني:
            تظهر كـ `EMAIL` في وضع الأحداث بدلاً من `EMAIL_VERIFICATION`
            المستخدمة هنا.
        vendor_data:
          type: string
          description: بيانات المزود (vendor data) الخاصة بالجلسة.
          nullable: true
        metadata:
          type: object
          description: البيانات الوصفية للجلسة.
          nullable: true
        expected_details:
          type: object
          description: >-
            التفاصيل المتوقعة المقدمة عند إنشاء الجلسة — تُستخدم للتحقق المتبادل
            مقابل البيانات المستخرجة (KYC) أو للملء المسبق لعملية البحث في سجل
            الشركات (KYB). تُعيد تماماً المفاتيح التي تم تقديمها؛ وتكون `null`
            عندما لا يتم تقديم أي منها. تحمل جلسات KYC حقول الشخص؛ بينما تحمل
            جلسات الشركات (KYB) الحقول `company_name` و`registry_country`
            و`registration_number`.
          properties:
            first_name:
              type: string
              description: الاسم الأول للمستخدم. على سبيل المثال، `John`.
            last_name:
              type: string
              description: اسم عائلة المستخدم. على سبيل المثال، `Doe`.
            date_of_birth:
              type: string
              format: date
              description: >-
                تاريخ ميلاد المستخدم بالتنسيق: YYYY-MM-DD. على سبيل المثال،
                `1990-05-15`.
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: جنس المستخدم. يجب أن يكون 'M' أو 'F' أو null.
            nationality:
              type: string
              description: >-
                رمز الدولة وفق المعيار ISO 3166-1 alpha-3 الذي يمثل بلد المنشأ
                لمقدم الطلب. على سبيل المثال، `USA`.
            country:
              type: string
              description: >-
                رمز الدولة وفق المعيار ISO 3166-1 alpha-3 الذي يمثل دولة مستند
                إثبات العنوان، أو دولة مستند هوية مقدم الطلب، والتي قد تختلف عن
                الجنسية. على سبيل المثال، `GBR`.
            address:
              type: string
              description: >-
                العنوان بتنسيق مقروء للبشر، متضمناً أكبر قدر ممكن من المعلومات.
                على سبيل المثال، `123 Main St, San Francisco, CA 94105, USA`.
            identification_number:
              type: string
              description: >-
                رقم مستند المستخدم، أو الرقم الشخصي، أو الرقم الضريبي. على سبيل
                المثال، `123456789`.
            ip_address:
              type: string
              format: ipv4
              description: >-
                عنوان IP المتوقع للجلسة. إذا اختلف عنوان IP الفعلي عن هذه
                القيمة، فسيتم تسجيل تحذير. على سبيل المثال، `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                أنواع المستندات التي تم تقييد خطوة التحقق من الهوية بها عند
                إنشاء الجلسة. الحقل الفارغ/غير المضبوط يعني عدم وجود قيود.
                الرموز: `P` (جواز سفر)، و`ID` (بطاقة هوية وطنية)، و`DL` (رخصة
                قيادة)، و`RP` (تصريح إقامة)، و`HIC` (بطاقة تأمين صحي)، و`TC`
                (بطاقة ضريبية)، و`SSC` (بطاقة ضمان اجتماعي).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: >-
                دولة الإصدار المتوقعة لمستند الهوية (ISO 3166-1 alpha-3)، عند
                تقييدها في وقت الإنشاء.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: >-
                دولة مستند إثبات العنوان المتوقعة (ISO 3166-1 alpha-3)، عند
                تقييدها في وقت الإنشاء.
              example: ESP
            company_name:
              type: string
              description: الاسم القانوني المتوقع للشركة. لجلسات الشركات (KYB) فقط.
            registry_country:
              type: string
              description: >-
                دولة السجل المتوقعة بصيغة `XX` أو `XX-YY` (رمز ISO 3166-1
                alpha-2، اختيارياً مع تقسيم فرعي ISO 3166-2 للسجلات على مستوى
                الولاية، مثل `US-CA`). لجلسات الشركات (KYB) فقط.
            registration_number:
              type: string
              description: رقم تسجيل الشركة المتوقع. جلسات التحقق من الشركات (KYB) فقط.
          nullable: true
        contact_details:
          type: object
          description: >-
            تفاصيل الاتصال المقدمة عند إنشاء الجلسة (تُستخدم لرسائل البريد
            الإلكتروني للإشعارات، والتحقق من الهاتف/البريد الإلكتروني المعبأ
            مسبقاً، ولغة التواصل). تكون القيمة `null` عند عدم تقديم بريد
            إلكتروني أو رقم هاتف.
          properties:
            email:
              type: string
              description: >-
                عنوان البريد الإلكتروني للمستخدم (مثل "john.doe@example.com")
                الذي سيتم استخدامه أثناء خطوة التحقق من البريد الإلكتروني. إذا
                لم يتم توفيره، يجب على المستخدم تقديمه أثناء مسار التحقق.
            email_lang:
              type: string
              description: >-
                رمز اللغة (ISO 639-1) لإشعارات البريد الإلكتروني. يتحكم في لغة
                جميع اتصالات البريد الإلكتروني (مثل "en" و"es" و"fr").
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                إذا كانت القيمة true وتم توفير بريد إلكتروني، ترسل Didit رسالة
                البريد الإلكتروني الأولية "Verify your identity" بشكل غير متزامن
                عند إنشاء جلسة التحقق من المستخدمين (KYC) أو التحقق من الشركات
                (KYB). ترسل Didit أيضاً إشعارات بحالة التحقق للجلسات التي تتطلب
                مراجعة يدوية إلى عنوان البريد الإلكتروني المقدَّم.
            phone:
              type: string
              nullable: true
              description: >-
                رقم هاتف المستخدم بتنسيق E.164 إذا كان متاحاً (على سبيل المثال،
                +14155552671). يكون `null` إذا تم تقديم بريد إلكتروني فقط عند
                إنشاء الجلسة. ملاحظة: يعيد هذا الحقل رقم الهاتف الأصلي المقدم
                أثناء إنشاء الجلسة. إذا كان الرقم غير صالح، فقد لا يكون بتنسيق
                E.164.
          nullable: true
        callback:
          type: string
          format: uri
          description: رابط الاستدعاء الخاص بالجلسة.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير التحقق من الهوية (OCR)** التي تم إنشاؤها بواسطة
            خطوات مستند الهوية في مخطط سير العمل. دائماً ما تكون مصفوفة JSON —
            اقرأ `id_verifications[0]` وكرّر القراءة إذا كان بإمكان سير العمل
            لديك تشغيل أكثر من فحص هوية واحد (على سبيل المثال، فحص أساسي
            بالإضافة إلى فحص إضافي). تكون `null` حتى تُنتج خطوة هوية واحدة على
            الأقل بيانات. يمثل كل عنصر التقرير الكامل، بما في ذلك `node_id`،
            و`status` على مستوى الميزة، وحقول المستند المستخرجة، وعناوين URL
            للصور، ودرجات الجودة، وMRZ، وتحليل العنوان، والتطابقات عبر الجلسات،
            و`warnings[]`.
          items:
            type: object
            description: >-
              تقرير واحد للتحقق من الهوية - التقرير الكامل لخطوة واحدة من التحقق
              من الهوية. يوضح `verification_method` أي من الطرق الثلاث أنتجته
              (التقاط المستند، أو البحث دون مستند، أو تسجيل الدخول بالمحفظة)
              ويتم ملء كتلة الأدلة الخاصة بالطريقة وفقاً لذلك.
            properties:
              node_id:
                type: string
                description: معرّف عقدة مخطط سير العمل لخطوة OCR التي أنتجت هذا التقرير.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  أي طريقة من طرق التحقق من الهوية أنتجت هذا التقرير. `document`
                  - قام المستخدم بتصوير هوية فعلية (الافتراضية، والقيمة في كل
                  جلسة تم إنشاؤها قبل وجود الطرق الأخرى). `id_lookup` - قام
                  المستخدم بكتابة رقم هويته الوطنية وتم التحقق منه مقابل سجل
                  حكومي أو مصدر موثوق آخر لتلك الدولة (يحدد `id_lookup.source`
                  أي مصدر). `wallet` - قام المستخدم بتسجيل الدخول باستخدام هوية
                  رقمية حكومية أو مصرفية.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  مستوى الضمان المشتق من `verification_method`: `documentary`
                  لمستند تم التقاطه والتحقق منه، `data_match` للتفاصيل التي
                  تطابقت مع سجل يحتفظ به المصدر الذي تم الاستعلام عنه،
                  `cryptographic` للسمات التي صادق عليها موفر الهوية ووقّعها.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  معرّف المحفظة من الدليل عندما يكون `verification_method` هو
                  `wallet` (`mitid`، `bankid_se`، `itsme`، ...). يكون `null`
                  بخلاف ذلك.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  سبب عدم إنهاء الطريقة غير المعتمدة على المستندات لخطوة التحقق
                  من الهوية. يتم تعيينه عند فشل البحث أو تسجيل الدخول بالمحفظة:
                  في التحقق من المستند الذي واصل المستخدم عبره عندما كان خيار
                  الرجوع الاحتياطي للدولة هو `fallback_to_document` (حيث
                  `action` هو `fallback_to_document`)، أو في التقرير المرفوض
                  عندما كان `decline`. ويكون `null` في الحالات الأخرى.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: الطريقة التي فشلت.
                  reason:
                    type: string
                    description: >-
                      النتيجة التي أنهته، مثل `no_match` أو `provider_error` أو
                      `cancelled` أو `timeout`.
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: >-
                      الإجراء المُعَدّ الذي تم اتخاذه: `fallback_to_document` أو
                      `decline`.
              id_lookup:
                type: object
                nullable: true
                description: >-
                  دليل السجل. يتوفر فقط عندما تكون `verification_method` بقيمة
                  `id_lookup`؛ ويكون `null` فيما عدا ذلك.
                properties:
                  source:
                    type: string
                    description: >-
                      اسم المصدر الذي تم الاستعلام عنه كما يظهر للعميل، مثل
                      `Department of Home Affairs` (سجل حكومي) أو `UK credit
                      bureau and financial services records` (ليس سجلاً
                      حكومياً). هذا هو البيان الوحيد لمصدر البحث؛ لا تفترض أنه
                      مصدر حكومي.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: متى استجاب السجل.
                  attempts:
                    type: integer
                    description: رقم المحاولة (بدءاً من 1) التي ورد منها هذا التقرير.
                  max_attempts:
                    type: integer
                    description: >-
                      عدد المحاولات المسموح به والمُهيأ للدولة (من 1 إلى 5،
                      القيمة الافتراضية 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      ما أجاب به السجل. يُحسب فقط `match` و`partial_match`
                      و`no_match` ضمن ميزانية المحاولات والفاتورة.
                  comparison:
                    type: array
                    description: >-
                      صف واحد لكل حقل قابل للمقارنة أجاب عنه المصدر، بالإضافة
                      إلى صف واحد لكل خطأ في المصدر. تستخدم صفوف المقارنة أسماء
                      الحقول المعيارية أدناه بدلاً من مفاتيح حقول طلب الدولة،
                      لأن عدة حقول طلب (الاسم الأول واسم العائلة، أو أي من
                      الأسماء المستعارة للمعرّف) تندمج في مقارنة واحدة. المصدر
                      الذي فشل يلحق صفاً يحتوي على `field: "provider"` و
                      `result: "error"`، لذا اقرأ `result` قبل التعامل مع الصف
                      كقرار للحقل.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            حقل مقارنة معياري. `provider` ليس حقلاً للمستخدم: بل
                            يشير إلى صف خطأ في المصدر.
                        label:
                          type: string
                          description: >-
                            تسمية العرض للصف، مثل `ID number`، `Full name`،
                            `Provider`.
                        provided:
                          type: string
                          nullable: true
                          description: ما كتبه المستخدم. يكون `null` في صف خطأ `provider`.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            ما احتفظ به المصدر. في صف خطأ `provider`، يحمل هذا
                            الحقل رسالة الخطأ بدلاً من ذلك.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            نتيجة المقارنة لكل حقل. تظهر القيمة `error` فقط في
                            صف `provider` وتفيد بأن ذلك المصدر لم يستجب؛ تعامل
                            معها كدليل حول الاستعلام، ولا تعتبرها أبداً دليلاً
                            على عدم تطابق في الحقول.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      رابط URL موقع مسبقاً قصير الأجل للصورة الشخصية التي أرجعها
                      المصدر. فقط لسجلات الحكومات الأربعة التي تُرجع صورة (جنوب
                      إفريقيا، ونيجيريا، والأرجنتين، وبنما).
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      صورة سيلفي مقابل الصورة الشخصية في السجل، 0-100. فقط عندما
                      يُرجع السجل صورة شخصية.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  دليل بيانات الاعتماد. يظهر فقط عندما تكون قيمة
                  `verification_method` هي `wallet`؛ ويكون `null` في الحالات
                  الأخرى.
                properties:
                  provider:
                    type: string
                    description: معرّف المحفظة من الدليل، مثل `mitid`.
                  provider_name:
                    type: string
                    nullable: true
                    description: >-
                      اسم المحفظة كما يعرفه المستخدم النهائي، على سبيل المثال
                      `MitID`.
                  issuing_authority:
                    type: string
                    nullable: true
                    description: >-
                      الجهة المسؤولة عن المحفظة، مثل `Danish Agency for Digital
                      Government`.
                  issuing_country:
                    type: string
                    description: >-
                      الدولة بتنسيق ISO 3166-1 alpha-3 التي تم تقديم المحفظة
                      فيها.
                  credential_type:
                    type: string
                    nullable: true
                    description: >-
                      بيانات الاعتماد التي قدمتها المحفظة، مثل
                      `person_identification`.
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      مستوى التأكيد الذي أكدته المحفظة. يفشل تسجيل الدخول الذي
                      يؤكد مستوى أقل من المستوى المطلوب بدلاً من خفض المستوى.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: لحظة مصادقة المحفظة.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: >-
                      ما إذا كان قد تم التحقق من صحة الإقرار الموقّع الذي أرجعته
                      المحفظة.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: >-
                      السمات التي شاركتها المحفظة، مفهرسة كما يسردها إدخال دليل
                      المحفظة.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      رابط URL موقع مسبقاً قصير الأجل للصورة الشخصية التي
                      شاركتها المحفظة، حيث تشارك واحدة.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      صورة سيلفي مقابل الصورة الشخصية للمحفظة، 0-100، عندما
                      تشارك المحفظة واحدة.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  حالة مستوى الميزة لخطوة التحقق من الهوية هذه. مستقلة عن
                  `status` الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى
                  قرارها العام بينما تظل الميزة الفردية `In Review`.
              document_type:
                type: string
                description: نوع مستند التحقق من الهوية
              document_subtype:
                type: string
                nullable: true
                description: >-
                  رمز النوع الفرعي للمستند المقبول من إعدادات مستند سير العمل،
                  بما في ذلك منطقة المستند عند الاقتضاء. أمثلة:
                  `ID_CARD_GENERIC`، `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: رقم تعريف المستند
              personal_number:
                type: string
                description: رقم التعريف الشخصي
              portrait_image:
                type: string
                format: uri
                description: رابط URL للصورة الشخصية
              front_image:
                type: string
                format: uri
                description: رابط URL لصورة وجه المستند
              front_video:
                type: string
                format: uri
                description: رابط URL لفيديو وجه المستند
              back_image:
                type: string
                format: uri
                description: رابط URL لصورة الوجه الخلفي للمستند
              back_video:
                type: string
                format: uri
                description: رابط URL لفيديو ظهر المستند
              full_front_image:
                type: string
                format: uri
                description: رابط URL لصورة وجه المستند الكاملة
              full_back_image:
                type: string
                format: uri
                description: رابط URL لصورة ظهر المستند الكاملة
              front_image_camera_front:
                type: string
                format: uri
                description: رابط URL لصورة وجه المستند الملتقطة من الكاميرا الأمامية
              back_image_camera_front:
                type: string
                format: uri
                description: رابط URL لصورة ظهر المستند الملتقطة من الكاميرا الأمامية
              date_of_birth:
                type: string
                format: date
                description: تاريخ الميلاد من المستند
              age:
                type: integer
                description: العمر المحسوب من تاريخ الميلاد
              expiration_date:
                type: string
                format: date
                description: تاريخ انتهاء المستند
              date_of_issue:
                type: string
                format: date
                description: تاريخ إصدار المستند
              issuing_state:
                type: string
                description: رمز ISO للولاية المُصدِرة
              issuing_state_name:
                type: string
                description: الاسم الكامل للولاية المُصدِرة
              first_name:
                type: string
                description: الاسم الأول من المستند
              last_name:
                type: string
                description: اسم العائلة من المستند
              full_name:
                type: string
                description: الاسم الكامل من المستند
              gender:
                type: string
                description: الجنس من المستند
              address:
                type: string
                description: العنوان الخام من المستند
              formatted_address:
                type: string
                description: العنوان الكامل المنسق
              place_of_birth:
                type: string
                description: مكان الميلاد من المستند
              marital_status:
                type: string
                description: الحالة الاجتماعية من المستند
              nationality:
                type: string
                description: رمز الجنسية حسب معيار ISO
              extra_fields:
                type: object
                description: >-
                  حقول المستند الإضافية. تتضمن سمات خاصة بالمستند (مثل
                  `dl_categories` و`blood_group` و`sponsor` و`employer`
                  و`dl_class_code_b_from` و`dl_class_code_b_to`). تُعاد تواريخ
                  صلاحية فئة رخصة القيادة بتنسيق `dl_class_code_<class>_from`
                  و`dl_class_code_<class>_to`، ورموز القيود/المعلومات لكل فئة
                  (مثل العمود 12 في رخص المملكة المتحدة) بتنسيق
                  `dl_class_code_<class>_notes`. عندما يحتوي المستند على أسماء
                  أو عنوان أو مكان الميلاد بأنظمة كتابة متعددة، يتضمن هذا الكائن
                  أيضاً إصدارات بنظام الكتابة البديل لتلك الحقول. يتحكم إعداد
                  سير العمل `preferred_characters` (`latin` أو `non_latin`) في
                  نظام الكتابة الذي يملأ الحقول من المستوى الأعلى (`first_name`
                  و`last_name` و`full_name` و`address` و`place_of_birth`)؛ بينما
                  يظهر نظام الكتابة المعاكس هنا باسم `first_name_non_latin` /
                  `last_name_non_latin` / `full_name_non_latin` /
                  `middle_name_non_latin` / `address_non_latin` /
                  `place_of_birth_non_latin` (عندما تكون `preferred_characters`
                  هي `latin`) أو مع لاحقة `_latin` (عندما تكون
                  `preferred_characters` هي `non_latin`). تظهر المفاتيح فقط
                  عندما يستخرج OCR بالفعل قيمة حقيقية بنظام كتابة بديل، ويتم
                  تخطي أي حقل تكون قيمته البديلة بنفس نظام كتابة المجموعة
                  المفضلة (على سبيل المثال، حقل مصنف بالسيريلية وتكون قيمة OCR
                  الخاصة به قد عادت بأحرف لاتينية متشابهة الشكل). عندما تكون
                  `preferred_characters` هي `latin` لكن المستند يحتوي فقط على نص
                  غير لاتيني، تقوم Didit بنقل الحروف صوتياً للقيم المستخرجة
                  وتوفر `first_name_latin` / `last_name_latin` / إلخ كخيار
                  احتياطي.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      الاسم الأول بنظام كتابة غير لاتيني عندما تكون
                      `preferred_characters=latin` وتتوفر نسخة غير لاتينية في
                      المستند (مثل `Айна` لبطاقة هوية قيرغيزية).
                  last_name_non_latin:
                    type: string
                    description: >-
                      اسم العائلة بنظام الكتابة غير اللاتيني عندما تكون قيمة
                      `preferred_characters=latin` وتتوفر نسخة غير لاتينية في
                      المستند.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      الاسم الأوسط / اسم الأب بنظام الكتابة غير اللاتيني عندما
                      يكون `preferred_characters=latin` وتتوفر نسخة غير لاتينية
                      في المستند.
                  full_name_non_latin:
                    type: string
                    description: >-
                      الاسم الكامل المركب بنظام الكتابة غير اللاتيني. يُعاد
                      تركيبه من المكونات الفردية عندما يتوفر كل من الاسم الأول
                      واسم العائلة.
                  address_non_latin:
                    type: string
                    description: >-
                      العنوان بنظام الكتابة غير اللاتيني عندما يكون
                      `preferred_characters=latin` ويتوفر إصدار غير لاتيني في
                      المستند.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      مكان الميلاد بنظام الكتابة غير اللاتيني عندما تكون القيمة
                      `preferred_characters=latin` وتتوفر نسخة غير لاتينية على
                      المستند.
                  first_name_latin:
                    type: string
                    description: >-
                      الاسم الأول بالأحرف اللاتينية. يتم ملؤه عندما تكون
                      `preferred_characters=non_latin` وتتوفر نسخة لاتينية في
                      المستند، أو — كخيار احتياطي للنقل الحرفي — عندما تكون
                      `preferred_characters=latin` ولكن المستند لا يحتوي إلا على
                      نص غير لاتيني.
                  last_name_latin:
                    type: string
                    description: >-
                      اسم العائلة بنظام الكتابة اللاتيني. تنطبق نفس قواعد
                      `first_name_latin`.
                  middle_name_latin:
                    type: string
                    description: >-
                      الاسم الأوسط / اسم الأب بالحروف اللاتينية. نفس قواعد
                      `first_name_latin`.
                  full_name_latin:
                    type: string
                    description: >-
                      الاسم الكامل المركب بنظام الكتابة اللاتيني. يُعاد تركيبه
                      دائماً من المكونات الفردية عندما يتوفر كل من الاسم الأول
                      واسم العائلة.
                  address_latin:
                    type: string
                    description: >-
                      العنوان بنظام الكتابة اللاتيني. نفس قواعد
                      `first_name_latin`.
                  place_of_birth_latin:
                    type: string
                    description: >-
                      مكان الميلاد بنظام الكتابة اللاتيني. تنطبق نفس قواعد
                      `first_name_latin`.
              mrz:
                type: object
                nullable: true
                description: >-
                  حقول منطقة القراءة الآلية (MRZ) المحللة والمستخرجة من المستند.
                  القيمة `null` في حال عدم اكتشاف أي MRZ.
                properties:
                  surname:
                    type: string
                    example: MARTINEZ<SANCHEZ
                  name:
                    type: string
                    example: ELENA
                  country:
                    type: string
                    example: ESP
                  nationality:
                    type: string
                    example: ESP
                  birth_date:
                    type: string
                    example: '850315'
                  expiry_date:
                    type: string
                    example: '220821'
                  sex:
                    type: string
                    example: F
                  document_type:
                    type: string
                    example: ID
                  document_number:
                    type: string
                    example: YZA123456
                  optional_data:
                    type: string
                    example: X9876543L
                  optional_data_2:
                    type: string
                    example: ''
                  birth_date_hash:
                    type: string
                    example: '7'
                  expiry_date_hash:
                    type: string
                    example: '4'
                  document_number_hash:
                    type: string
                    example: '9'
                  final_hash:
                    type: string
                    example: '2'
                  personal_number:
                    type: string
                    example: X9876543L
                  warnings:
                    type: array
                    items:
                      type: string
                  errors:
                    type: array
                    items:
                      type: string
                  mrz_type:
                    type: string
                    example: TD1
                  mrz_string:
                    type: string
                    example: |-
                      IDESPMARTINEZ<SANCHEZ<<<<<<<<<<
                      YZA123456<9ESP8503157F3208214<X9876543L<<<<<<<2
                      MARTINEZ<SANCHEZ<<ELENA<<<<<<<<<<
                  mrz_key:
                    type: string
                    example: YZA123456985031573208214
              parsed_address:
                type: object
                description: تفاصيل العنوان المهيكل
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: رمز الدولة المكون من حرفين
                  category:
                    type: string
                    description: فئة العنوان (مثل Residential، Commercial)
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: ما إذا كان قد تم التحقق من العنوان
                  postal_code:
                    type: string
                  raw_results:
                    type: object
                    properties:
                      types:
                        type: array
                        items:
                          type: string
                      geometry:
                        type: object
                        properties:
                          location:
                            type: object
                            properties:
                              lat:
                                type: number
                              lng:
                                type: number
                          viewport:
                            type: object
                            properties:
                              northeast:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                              southwest:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                          location_type:
                            type: string
                      place_id:
                        type: string
                      formatted_address:
                        type: string
                      navigation_points:
                        type: array
                        items:
                          type: object
                          properties:
                            location:
                              type: object
                              properties:
                                latitude:
                                  type: number
                                longitude:
                                  type: number
                      address_components:
                        type: array
                        items:
                          type: object
                          properties:
                            types:
                              type: array
                              items:
                                type: string
                            long_name:
                              type: string
                            short_name:
                              type: string
                  address_type:
                    type: string
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                      longitude:
                        type: number
                  formatted_address:
                    type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: ملفات إضافية للتحقق من المستند
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  درجة مطابقة الوجه بين الصورة الشخصية المستخرجة من الصورة
                  الأمامية للمستند وصورة الكاميرا الأمامية
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  درجة مطابقة الوجه بين الصورة الشخصية المستخرجة من الصورة
                  الخلفية للمستند وصورة الكاميرا الأمامية
              document_selfie_face_matches:
                type: array
                description: >-
                  الجلسات السابقة أو إدخالات قائمة حظر الوجوه التي تطابق وجهها
                  مع صورة السيلفي التي التقطتها الكاميرا الأمامية أثناء التقاط
                  المستند (البحث بالوجه عبر الالتقاط الصامت). نفس تنسيق الإدخال
                  مثل `liveness_checks[].matches`. تكون القيمة `null` للجلسات
                  التي تم إنشاؤها قبل وجود هذا الحقل أو عند عدم تشغيل البحث؛
                  ومصفوفة فارغة عند تشغيله وعدم العثور على أي تطابق.
                  `match_image_url` هو رابط موقع مسبقاً تنتهي صلاحيته.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف الجلسة للوجه المتطابق. يكون `null` عندما يكون
                        `source` هو `imported` أو `list_entry` أو
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: درجة تشابه الوجه بين الصورتين، محصورة بين 0 و100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` للجلسة المطابقة أو المستخدم المرتبط للوجوه
                        المستوردة والوجوه ذات القوالب المحتفظ بها.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف المستخدم المرتبط لتطابقات `imported`
                        و`retained_template` ولتطابقات الجلسات المرتبطة بمستخدم.
                        يكون `null` لمدخلات القوائم والجلسات غير المرتبطة
                        بمستخدم.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف القالب البيومتري المحتفظ به. يتم تعيينه فقط عندما
                        يكون `source` هو `retained_template`؛ و`null` بخلاف ذلك.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        متى تم التقاط الوجه المطابق، أو متى تم إنشاء قالب محتفظ
                        به. وتكون `null` لمدخلات القائمة.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        بيانات الهوية من الجلسة المتطابقة أو ملف تعريف المستخدم
                        المستورد. تكون دائماً `null` للتطابقات من نوع
                        `retained_template` و`list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        صورة مرجعية لعمليات المطابقة المستندة إلى الصور. تكون
                        دائماً `null` لمطابقات `retained_template` لأن القوالب
                        المحتفظ بها لا تحتوي على صورة.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        حالة دورة حياة الجلسة المتطابقة. تكون `null` للمصادر
                        التي ليست جلسات.
                    is_blocklisted:
                      type: boolean
                      description: ما إذا كان الوجه المطابق موجوداً في قائمة الحظر.
                    is_allowlisted:
                      type: boolean
                      description: ما إذا كان الوجه المطابق موجوداً في قائمة السماح.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        خدمة API المستقلة للجلسة المطابقة (مثل
                        `PASSIVE_LIVENESS`، و`FACE_MATCH`)؛ وتكون القيمة `null`
                        لجلسات سير العمل والمصادر غير المرتبطة بجلسة.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        أصل الوجه المطابق: `session`، أو `imported` (تحميل وجه
                        المستخدم User)، أو `list_entry` (قائمة السماح/الحظر)، أو
                        `retained_template` (قالب بيومتري خالٍ من الصور محفوظ
                        لدى User، مدرج تحت `/v3/biometric-templates/`).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: >-
                  مقاييس جودة صورة الوجه الأمامي للمستند. تتراوح كل درجة فرعية
                  بين 0 و100.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      وضوح الصورة مقاساً عبر تباين Laplacian المحلي لأعلى 10%.
                      متين في مواجهة المستندات ذات الخلفيات الموحدة الكبيرة.
                      تشير القيم الأعلى إلى صورة أكثر وضوحاً وأقل ضبابية.
                  brightness_score:
                    type: number
                    description: >-
                      مدى جودة إضاءة الصورة. تُفرَض عقوبة على الصور شديدة
                      الإعتام أو المفرطة في التعرض للضوء، وتكون درجة السطوع
                      المثالية حول النطاق المتوسط.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      يشير إلى اتجاه مشكلة السطوع عندما تكون brightness_score
                      منخفضة. تعني 'ok' أن السطوع مقبول، وتعني 'too_dark' أن
                      الصورة غير معرّضة للضوء بشكل كافٍ، وتعني 'too_bright' أن
                      الصورة معرّضة للضوء بشكل مفرط.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true إذا كانت جميع الزوايا الأربع للمستند مرئية بالكامل
                      داخل إطار الصورة، وfalse إذا كانت أي زاوية مقتطعة. وتكون
                      Null عند عدم توفر إحداثيات الزوايا.
                  resolution_score:
                    type: number
                    description: الدقة الفعلية للصورة بناءً على إجمالي عدد وحدات البكسل.
                  overall_score:
                    type: number
                    description: >-
                      مركّب موزون من الدرجات الفرعية (التركيز 45%، السطوع 30%،
                      الدقة 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: >-
                  مقاييس جودة صورة الوجه الخلفي للمستند. نفس بنية
                  front_image_quality_score.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      وضوح الصورة مقاساً عبر تباين Laplacian المحلي لأعلى 10%.
                      متين في مواجهة المستندات ذات الخلفيات الموحدة الكبيرة.
                      تشير القيم الأعلى إلى صورة أكثر وضوحاً وأقل ضبابية.
                  brightness_score:
                    type: number
                    description: >-
                      مدى جودة إضاءة الصورة. تُفرَض عقوبة على الصور شديدة
                      الإعتام أو المفرطة في التعرض للضوء، وتكون درجة السطوع
                      المثالية حول النطاق المتوسط.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      يشير إلى اتجاه مشكلة السطوع عندما تكون brightness_score
                      منخفضة. تعني 'ok' أن السطوع مقبول، وتعني 'too_dark' أن
                      الصورة غير معرّضة للضوء بشكل كافٍ، وتعني 'too_bright' أن
                      الصورة معرّضة للضوء بشكل مفرط.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true إذا كانت جميع الزوايا الأربع للمستند مرئية بالكامل
                      داخل إطار الصورة، وfalse إذا كانت أي زاوية مقتطعة. وتكون
                      Null عند عدم توفر إحداثيات الزوايا.
                  resolution_score:
                    type: number
                    description: الدقة الفعلية للصورة بناءً على إجمالي عدد وحدات البكسل.
                  overall_score:
                    type: number
                    description: >-
                      مركّب موزون من الدرجات الفرعية (التركيز 45%، السطوع 30%،
                      الدقة 25%).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير (مثل `ID_VERIFICATION`،
                        و`NFC`، و`LIVENESS`). تحدد القيمة كتلة الميزة التي ينتمي
                        إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات كل وحدة
                        نمطية القيمة المطابقة لوحدتها، ولكن التعداد (enum) أعلاه
                        هو المرجع المعتمد عبر جميع تحذيرات الميزات في payload
                        القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: بيانات سياقية إضافية حول التحذير
                    log_type:
                      type: string
                      description: 'نوع السجل: معلومات، أو تحذير، أو خطأ'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير (لسير
                        العمل المعتمد على المخططات)
                description: تحذيرات التحقق من المستند
              matches:
                type: array
                description: >-
                  المستندات المطابقة التي تم العثور عليها أثناء كشف
                  التكرار/قائمة الحظر (ما يصل إلى 5 تطابقات)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: معرّف الجلسة للمستند المتطابق
                    session_number:
                      type: integer
                      description: رقم الجلسة للمستند المطابق
                    vendor_data:
                      type: string
                      nullable: true
                      description: بيانات المزود المرتبطة بجلسة المطابقة
                    verification_date:
                      type: string
                      format: date-time
                      description: تاريخ التحقق من جلسة المطابقة
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: الاسم الكامل من المستند المطابق
                        document_type:
                          type: string
                          description: نوع المستند المطابق
                        document_number:
                          type: string
                          description: رقم المستند الخاص بالمستند المطابق
                    status:
                      type: string
                      description: حالة الجلسة المتطابقة
                    is_blocklisted:
                      type: boolean
                      description: ما إذا كان المستند المطابق مدرجاً في قائمة الحظر
                    api_service:
                      type: string
                      nullable: true
                      description: نوع خدمة API للجلسة المتطابقة
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: رابط URL لصورة وجه المستند من المستند المطابق
              document_liveness:
                type: object
                nullable: true
                description: >-
                  درجات كشف الحيوية الخاصة بالمستند لكل نوع من أنواع الاحتيال،
                  ويتم الإبلاغ عنها سواء أُطلق تحذير أم لا، حتى يمكن تدقيق
                  المستند المقبول. وتكون `null` عندما لا يتم تشغيل الفحص.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          احتمالية أن يكون المستند أصلياً لنوع الاحتيال هذا، من
                          0 إلى 100 (كلما زادت القيمة = زاد احتمال كونه أصلياً).
                          أدنى قيمة بين الجانبين - وهي القيمة التي استند إليها
                          القرار. تكون `null` إذا لم ينتج عن أي من الجانبين درجة
                          قابلة للاستخدام.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الأمامي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الخلفي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد الرفض المحفوظ عند تقييم هذا المستند. لا تؤدي
                          تعديلات سير العمل اللاحقة إلى تغييره. القيمة Null عند
                          عدم توفر أدلة التقييم التاريخية.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد المراجعة المحفوظ عند تقييم هذا المستند. التعديلات
                          اللاحقة على سير العمل لا تغيره. يكون Null عندما لا
                          تتوفر أدلة التقييم التاريخية.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          فئة نوع الاحتيال المحفوظة وقت التقييم. تكون Null عندما
                          لا تتوفر درجة قابلة للاستخدام، أو لم يتم تطبيق الفحص،
                          أو لا تتوفر أدلة تقييم تاريخية. التعديلات اللاحقة على
                          سير العمل لا تغيّرها.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          احتمالية أن يكون المستند أصلياً لنوع الاحتيال هذا، من
                          0 إلى 100 (كلما زادت القيمة = زاد احتمال كونه أصلياً).
                          أدنى قيمة بين الجانبين - وهي القيمة التي استند إليها
                          القرار. تكون `null` إذا لم ينتج عن أي من الجانبين درجة
                          قابلة للاستخدام.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الأمامي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الخلفي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد الرفض المحفوظ عند تقييم هذا المستند. لا تؤدي
                          تعديلات سير العمل اللاحقة إلى تغييره. القيمة Null عند
                          عدم توفر أدلة التقييم التاريخية.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد المراجعة المحفوظ عند تقييم هذا المستند. التعديلات
                          اللاحقة على سير العمل لا تغيره. يكون Null عندما لا
                          تتوفر أدلة التقييم التاريخية.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          فئة نوع الاحتيال المحفوظة وقت التقييم. تكون Null عندما
                          لا تتوفر درجة قابلة للاستخدام، أو لم يتم تطبيق الفحص،
                          أو لا تتوفر أدلة تقييم تاريخية. التعديلات اللاحقة على
                          سير العمل لا تغيّرها.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          احتمالية أن يكون المستند أصلياً لنوع الاحتيال هذا، من
                          0 إلى 100 (كلما زادت القيمة = زاد احتمال كونه أصلياً).
                          أدنى قيمة بين الجانبين - وهي القيمة التي استند إليها
                          القرار. تكون `null` إذا لم ينتج عن أي من الجانبين درجة
                          قابلة للاستخدام.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الأمامي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          درجة الوجه الخلفي؛ وتكون `null` عندما لا يتم التقاطه
                          أو عند إسقاط الدرجة.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد الرفض المحفوظ عند تقييم هذا المستند. لا تؤدي
                          تعديلات سير العمل اللاحقة إلى تغييره. القيمة Null عند
                          عدم توفر أدلة التقييم التاريخية.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          حد المراجعة المحفوظ عند تقييم هذا المستند. التعديلات
                          اللاحقة على سير العمل لا تغيره. يكون Null عندما لا
                          تتوفر أدلة التقييم التاريخية.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          فئة نوع الاحتيال المحفوظة وقت التقييم. تكون Null عندما
                          لا تتوفر درجة قابلة للاستخدام، أو لم يتم تطبيق الفحص،
                          أو لا تتوفر أدلة تقييم تاريخية. التعديلات اللاحقة على
                          سير العمل لا تغيّرها.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  التحقق من صحة العنوان للعنوان المطبوع على هذا المستند: ما إذا
                  كان موجوداً وصيغته الموحدة، كما قرأها المستند (أي تصحيح لاحق
                  لـ `address` لا يعيد تشغيله). يظهر عندما تُفعّل خطوة التحقق من
                  الهوية هذه الميزة الإضافية للتحقق من العنوان؛ ويكون `null`
                  بخلاف ذلك.
              region:
                type: string
                nullable: true
                description: منطقة أو ولاية دولة إصدار المستند عندما يحدد المستند ذلك.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  لقطة للبيانات المستخرجة من المستند والتي تم عرضها على الشخص
                  لمراجعتها، محفوظة بجانب القيم المؤكدة حتى تتمكن من مقارنة ما
                  تمت قراءته بما أكده الشخص. تكون `null` عندما لا يُطلب من الشخص
                  المراجعة.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: >-
                  البيانات المقروءة من الرموز الشريطية (barcodes) للمستند. تكون
                  فارغة عندما لا يحتوي المستند على أي منها أو لم تتم قراءة أي
                  منها.
        nfc_skip_reason:
          type: string
          nullable: true
          enum:
            - USER_SKIPPED
            - DOCUMENT_WITHOUT_CHIP
            - CHIP_CERTIFICATE_UNAVAILABLE
            - DEVICE_WITHOUT_NFC
            - INTEGRATION_WITHOUT_NFC_ACCESS
            - MRZ_KEY_UNAVAILABLE
            - JPKI_UNAVAILABLE
          description: >-
            سبب عدم تشغيل التحقق من شريحة NFC، ويتم ملؤه كلما تضمن سير العمل
            خطوة NFC. تكون القيمة `null` أثناء انتظار NFC أو عند قراءة الشريحة
            بالفعل. القيم: `USER_SKIPPED` - اختار المستخدم التخطي على جهاز يدعم
            NFC (مسموح به عبر `allow_nfc_skip`)؛ `DOCUMENT_WITHOUT_CHIP` - لا
            يحتوي المستند على شريحة NFC قابلة للقراءة (ليس مستنداً إلكترونياً
            متوافقاً مع ICAO 9303)؛ `CHIP_CERTIFICATE_UNAVAILABLE` - شهادة
            التوقيع الخاصة بدولة الإصدار (CSCA) التي تغطي فترة إصدار المستند غير
            متوفرة، لذا لا يمكن التحقق من توقيع الشريحة؛ `DEVICE_WITHOUT_NFC` -
            أبلغ الجهاز عن عدم وجود قارئ NFC؛ `INTEGRATION_WITHOUT_NFC_ACCESS` -
            تم تشغيل التحقق بدون SDK أصلي (على سبيل المثال في متصفح الويب)،
            والذي لا يملك صلاحية الوصول إلى قارئ NFC بالهاتف؛
            `MRZ_KEY_UNAVAILABLE` - تعذر اشتقاق مفتاح الوصول إلى الشريحة من كود
            MRZ للمستند؛ `JPKI_UNAVAILABLE` - المستند هو بطاقة My Number
            اليابانية، والتي تُقرأ شريحتها عبر JPKI، ولم يكن JPKI متوفراً لعملية
            التحقق هذه: فهو غير مُمكّن، أو أن SDK الأصلي للتطبيق لا يمكنه قراءة
            بطاقات My Number.
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير التحقق عبر NFC / جواز السفر الإلكتروني** الناتجة
            عن خطوات NFC في مخطط سير العمل. **هذه دائماً مصفوفة JSON، وليست كائن
            `nfc` مفرداً أبداً** — اقرأ `nfc_verifications[0]` وكرّر القراءة إذا
            كان بإمكان سير العمل لديك تشغيل NFC أكثر من مرة. تكون `null` حتى
            تُنتج خطوة NFC واحدة على الأقل بيانات. يمثل كل عنصر التقرير الكامل،
            بما في ذلك `node_id`، و`status` على مستوى الميزة، و`chip_protocol`،
            و`chip_data`، و`authenticity` (سلامة SOD + DG)،
            و`certificate_summary`، و`warnings[]`. تتم قراءة بطاقة My Number
            اليابانية عبر JPKI بدلاً من ICAO 9303: يحتوي عنصرها على
            `chip_protocol: "jpki"`، ويحمل أدلته تحت `jpki`، ويترك حقول ICAO
            بقيمة `null`. عندما يتم تجاوز خطوة NFC قبل أن تُتاح للمستخدم أصلاً
            (مستند بدون شريحة، أو شهادة مفقودة، أو عدم الإبلاغ عن إمكانية NFC،
            أو مفتاح MRZ غير قابل للقراءة، أو عدم توفر JPKI لبطاقة My Number)،
            يظل هذا الحقل `null` ويوضح `nfc_skip_reason` السبب؛ أما التخطي في
            الخطوة نفسها (نقر المستخدم على تخطٍّ، أو تبيّن عدم توفر القارئ في
            وقت المسح) فيظل يُنتج تقريراً مع `is_nfc_skipped: true`.
          items:
            type: object
            description: >-
              تقرير NFC واحد: التقرير الكامل لقراءة شريحة واحدة (شريحة جواز سفر
              إلكتروني أو بطاقة هوية إلكترونية وفق معيار ICAO 9303، أو بطاقة My
              Number اليابانية المقروءة عبر JPKI).
            properties:
              node_id:
                type: string
                description: >-
                  معرّف عقدة مخطط سير العمل لخطوة NFC التي أنتجت هذا التقرير.
                  استخدمه لربط التقرير بتعريف سير العمل.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  حالة مستوى الميزة لخطوة NFC هذه. مستقلة عن `status` الجلسة من
                  المستوى الأعلى — يمكن أن تصل الجلسة إلى قرارها العام بينما تظل
                  الميزة الفردية `In Review`.
              is_nfc_skipped:
                type: boolean
                description: >-
                  تكون `true` عندما يتم تخطي خطوة NFC هذه صراحةً بدلاً من
                  قراءتها؛ ويوضح `skip_reason` السبب.
              skip_reason:
                type: string
                nullable: true
                enum:
                  - USER_SKIPPED
                  - DOCUMENT_WITHOUT_CHIP
                  - CHIP_CERTIFICATE_UNAVAILABLE
                  - DEVICE_WITHOUT_NFC
                  - INTEGRATION_WITHOUT_NFC_ACCESS
                  - MRZ_KEY_UNAVAILABLE
                  - JPKI_UNAVAILABLE
                description: >-
                  سبب تخطي خطوة NFC هذه. يُعيّن فقط عندما تكون `is_nfc_skipped`
                  بقيمة `true`. يتبع نفس تصنيف `nfc_skip_reason` على مستوى
                  الجلسة، والذي يغطي أيضاً الحالات التي لم يُنشئ فيها NFC
                  تقريراً على الإطلاق.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  كيفية قراءة شريحة خطوة NFC. `icao`: شريحة جواز السفر
                  الإلكتروني أو بطاقة الهوية الإلكترونية وفق معيار ICAO 9303،
                  والتي تُفتح باستخدام مفتاح الوصول من MRZ. `jpki`: بطاقة My
                  Number اليابانية، حيث تقوم البطاقة بتوقيع تحدٍ يُستخدم لمرة
                  واحدة بعد قيام حاملها بإدخال رقم PIN للبطاقة في SDK أصلي؛
                  وتكون النتيجة ضمن `jpki`. وتُحدد أيضاً في الخطوات المتخطاة،
                  حتى تتمكن من تمييز قراءة بطاقة My Number المتخطاة.
              jpki:
                type: object
                nullable: true
                description: >-
                  ما أثبتته قراءة بطاقة My Number اليابانية عبر JPKI. يكون
                  موجوداً عندما يكون `chip_protocol` هو `jpki` وتتم قراءة
                  البطاقة. `null` لرقائق ICAO، وللخطوات التي تم تخطيها، وعند
                  إغلاق خطوة NFC دون قراءة أي بطاقة (تثير هذه الحالة
                  `JPKI_SIGNATURE_INVALID`). لا يحمل مطلقاً الشهادات أو أرقامها
                  التسلسلية أو التوقيعات أو رقم My Number المكون من 12 رقماً.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      شهادات البطاقة المقروءة. تُقرأ `user_authentication` (رمز
                      PIN المكون من 4 أرقام) دائماً؛ وتُقرأ `signature` (رمز PIN
                      الخاص بالتوقيع) عند تفعيل إعداد `jpki_request_attributes`
                      الخاص بعقدة NFC.
                  chain_valid:
                    type: boolean
                    description: >-
                      تكون القيمة `true` عندما تتسلسل كل شهادة مقروءة إلى سلطة
                      تصديق JPKI، وتكون ضمن فترة صلاحيتها، وتكون شهادة My Number
                      Card من نوعها.
                  signature_valid:
                    type: boolean
                    description: >-
                      تكون القيمة `true` عندما يتم التحقق بنجاح من كل توقيع
                      أجرته البطاقة على التحدي المخصص لمرة واحدة. لا توقّع
                      البطاقة إلا بعد إدخال رمز PIN الخاص بها، مما يثبت حيازة
                      البطاقة ومعرفة رمز PIN.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      `good` عندما يؤكد فحص الإلغاء أن كل شهادة صالحة،
                      و`revoked` عند إلغاء أي شهادة (على سبيل المثال، بطاقة تم
                      الإبلاغ عن فقدانها)، و`unchecked` عندما لا تتوفر أي إجابة
                      بشأن الإلغاء. لا تتم معاملة `unchecked` على أنها `good`
                      أبداً: يحدد `jpki_revocation_unchecked_action` الخاص بعقدة
                      NFC النتيجة (الافتراضي هو `REVIEW`).
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      جيل جهة إصدار شهادات JPKI التي أصدرت الشهادات، على سبيل
                      المثال `2023`. يكون `null` عندما لا ترتبط أي شهادة بسلسلة
                      تصل إلى جهة إصدار منها.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: أقرب تاريخ انتهاء صلاحية بين الشهادات المقروءة.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        ما أثبتته شهادة واحدة تمت قراءتها من البطاقة. لا يعرض
                        الشهادة نفسها أو رقمها التسلسلي أبداً.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: أي شهادة بطاقة يصفها هذا الإدخال.
                        chain_valid:
                          type: boolean
                          description: >-
                            تكون القيمة `true` عندما تتسلسل الشهادة إلى سلطة
                            تصديق JPKI الخاصة بنوعها، وتكون ضمن فترة صلاحيتها،
                            وتكون شهادة My Number Card من ذلك النوع.
                        signature_valid:
                          type: boolean
                          description: >-
                            تكون القيمة `true` عند التحقق بنجاح من توقيع البطاقة
                            على التحدي المخصص لمرة واحدة مقابل هذه الشهادة.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            جيل جهة إصدار شهادات JPKI التي أصدرت الشهادة، على
                            سبيل المثال `2023`. يكون `null` عند عدم العثور على
                            جهة إصدار موثوقة.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            بداية فترة صلاحية الشهادة. يكون `null` عندما يتعذر
                            قراءة الشهادة.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            نهاية فترة صلاحية الشهادة. `null` عندما يتعذر قراءة
                            الشهادة.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            سبب كون `chain_valid` هو `false`: إما
                            `unreadable_certificate`، أو `untrusted_issuer` (غير
                            صادرة عن جهة اعتماد JPKI من نوعها)، أو `expired`، أو
                            `not_yet_valid`، أو `wrong_policy` (ليست شهادة بطاقة
                            My Number من ذلك النوع) أو `key_usage` (المفتاح لا
                            يجوز له التوقيع). وتكون القيمة `null` عندما تكون
                            السلسلة صالحة.
                    description: النتائج لكل شهادة، إدخال واحد لكل شهادة تمت قراءتها.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      بيانات الحامل من شهادة التوقيع، بمجرد أن تصبح سلسلتها
                      صالحة. `null` عندما لا تُطلب شهادة التوقيع أو لم تتسلسل
                      إلى سلطة التصديق JPKI.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: الاسم كما هو مسجل، عادةً بنظام الكتابة الياباني.
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          تاريخ الميلاد، `YYYY-MM-DD`. يكون `null` عندما يكون
                          التاريخ المسجل غير مكتمل.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: '`M` أو `F` أو `null` عند عدم التسجيل.'
                      address:
                        type: string
                        nullable: true
                        description: العنوان المسجل.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          سلسلة مواضع تشير إلى أحرف `full_name` التي تم
                          استبدالها ببديل لأن الحرف الأصلي خارج مجموعة الأحرف
                          القياسية. تكون `null` في حال لم يتم استبدال أي حرف.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          سلسلة مواضع تشير إلى الأحرف البديلة في `address`، كما
                          هو الحال مع `name_substitute_characters`.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      `true` عندما تتطابق السمات مع البيانات المقروءة من صورة
                      البطاقة نفسها، و`false` عندما تختلف أي سمة
                      (`JPKI_AND_OCR_DATA_NOT_SAME`)، و`null` عندما يتعذر مقارنة
                      أي شيء، بما في ذلك عندما تكون قيمة `attributes` هي `null`.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      أسماء السمات التي تختلف عن بيانات الصورة، دون قيمها
                      إطلاقاً. تكون فارغة عندما يتطابق كل ما تمت مقارنته.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  رابط موقع مسبقاً للصورة الشخصية المقروءة من الشريحة (ICAO
                  DG2). تكون القيمة `null` في حالة قراءة JPKI (`chip_protocol:
                  "jpki"`) وللخطوات التي تم تخطيها.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  رابط موقع مسبقاً لصورة توقيع حامل المستند المقروءة من الشريحة
                  (ICAO DG7)، عندما تحتوي الشريحة على توقيع مخزن. تكون القيمة
                  `null` في حالة قراءة JPKI (`chip_protocol: "jpki"`) وللخطوات
                  التي تم تخطيها.
              chip_data:
                type: object
                nullable: true
                description: >-
                  البيانات الشخصية التي تم تحليلها من مجموعات البيانات (Data
                  Groups) لشريحة ICAO. تكون `null` لقراءة JPKI (`chip_protocol:
                  "jpki"`) وللخطوات التي تم تخطيها.
                properties:
                  document_type:
                    type: string
                  issuing_country:
                    type: string
                  document_number:
                    type: string
                  expiration_date:
                    type: string
                    format: date
                  first_name:
                    type: string
                  last_name:
                    type: string
                  birth_date:
                    type: string
                    format: date
                  gender:
                    type: string
                  nationality:
                    type: string
                  address:
                    type: string
                  place_of_birth:
                    type: string
              authenticity:
                type: object
                nullable: true
                description: >-
                  المصادقة السلبية لـ ICAO: توقيع SOD (`sod_integrity`) وتجزئات
                  Data Group (`dg_integrity`). تكون `null` لقراءة JPKI، والتي
                  تبلّغ عن إثباتها ضمن `jpki`.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  ملخص لشهادة موقّع المستندات (Document Signer Certificate) وفق
                  ICAO. تكون القيمة `null` لقراءة JPKI (`chip_protocol: "jpki"`)
                  وللخطوات التي تم تخطيها.
                properties:
                  issuer:
                    type: string
                  subject:
                    type: string
                  serial_number:
                    type: string
                  not_valid_after:
                    type: string
                    format: date-time
                  not_valid_before:
                    type: string
                    format: date-time
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
        liveness_checks:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير كشف الحيوية** التي تم إنشاؤها بواسطة خطوات كشف
            الحيوية في مخطط سير العمل. دائماً ما تكون مصفوفة JSON — وليست كائن
            `liveness` مفرداً أبداً. تكون `null` حتى تنتج خطوة كشف حيوية واحدة
            على الأقل بيانات. يمثل كل عنصر التقرير الكامل، بما في ذلك `node_id`،
            و`status` على مستوى الميزة، و`method`، و`score`، و`reference_image`،
            و`video_url`، و`age_estimation` الاختياري، و`matches[]` عبر الجلسات،
            و`warnings[]`.
          items:
            type: object
            description: تقرير كشف حيوية واحد — التقرير الكامل لجولة كشف حيوية فردية.
            properties:
              node_id:
                type: string
                description: >-
                  معرّف عقدة مخطط سير العمل لخطوة كشف الحيوية التي أنتجت هذا
                  التقرير.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  حالة مستوى الميزة لخطوة كشف الحيوية هذه. مستقلة عن `status`
                  الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى قرارها العام
                  بينما تظل الميزة الفردية `In Review`.
              method:
                type: string
                description: الطريقة المستخدمة لكشف الحيوية
              score:
                type: number
                description: درجة الثقة لكشف الحيوية
              reference_image:
                type: string
                format: uri
                description: رابط URL للصورة المرجعية المستخدمة
              video_url:
                type: string
                format: uri
                description: رابط URL لفيديو فحص الحيوية
              age_estimation:
                type: number
                description: العمر التقديري للشخص
              matches:
                type: array
                description: >-
                  وجوه مشابهة عُثر عليها بواسطة البحث عن الوجوه المكررة (أعلى
                  التطابقات، وتظهر الإدخالات المدرجة في قائمة الحظر/السماح
                  أولاً). يُبيّن `source` لكل إدخال مصدر الوجه المطابق:
                  `session` (جلسة تحقق أخرى)، أو `imported` (وجه تم رفعه لمستخدم
                  مورّد)، أو `list_entry` (وجه في قائمة سماح/حظر تديرها
                  المؤسسة)، أو `retained_template` (قالب بيومتري بدون صورة مخزّن
                  لدى المستخدم، ومدرج ضمن `/v3/biometric-templates/`). تكون قيم
                  `session_id` و`session_number` و`status` و`api_service` هي
                  `null` للمصادر غير التابعة لجلسة. تظل مطابقات `imported` تملأ
                  `vendor_data` و`verification_date` و—عندما يكون لمستخدم
                  المورّد اسم مسجل—`user_details` (مع `full_name` فقط) من سجل
                  مستخدم المورّد؛ بينما تملأ مطابقات `retained_template` كلاً من
                  `vendor_user_id` و`vendor_data` و`biometric_template_id`
                  و`verification_date`، في حين تكون حقول الصور والهوية الخاصة
                  بها `null`؛ وتُرجع مطابقات `list_entry` كل هذه الحقول بقيمة
                  `null`.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف الجلسة للوجه المتطابق. يكون `null` عندما يكون
                        `source` هو `imported` أو `list_entry` أو
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: درجة تشابه الوجه بين الصورتين، محصورة بين 0 و100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` للجلسة المطابقة أو المستخدم المرتبط للوجوه
                        المستوردة والوجوه ذات القوالب المحتفظ بها.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف المستخدم المرتبط لتطابقات `imported`
                        و`retained_template` ولتطابقات الجلسات المرتبطة بمستخدم.
                        يكون `null` لمدخلات القوائم والجلسات غير المرتبطة
                        بمستخدم.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        معرّف القالب البيومتري المحتفظ به. يتم تعيينه فقط عندما
                        يكون `source` هو `retained_template`؛ و`null` بخلاف ذلك.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        متى تم التقاط الوجه المطابق، أو متى تم إنشاء قالب محتفظ
                        به. وتكون `null` لمدخلات القائمة.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        بيانات الهوية من الجلسة المتطابقة أو ملف تعريف المستخدم
                        المستورد. تكون دائماً `null` للتطابقات من نوع
                        `retained_template` و`list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        صورة مرجعية لعمليات المطابقة المستندة إلى الصور. تكون
                        دائماً `null` لمطابقات `retained_template` لأن القوالب
                        المحتفظ بها لا تحتوي على صورة.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        حالة دورة حياة الجلسة المتطابقة. تكون `null` للمصادر
                        التي ليست جلسات.
                    is_blocklisted:
                      type: boolean
                      description: ما إذا كان الوجه المطابق موجوداً في قائمة الحظر.
                    is_allowlisted:
                      type: boolean
                      description: ما إذا كان الوجه المطابق موجوداً في قائمة السماح.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        خدمة API المستقلة للجلسة المطابقة (مثل
                        `PASSIVE_LIVENESS`، و`FACE_MATCH`)؛ وتكون القيمة `null`
                        لجلسات سير العمل والمصادر غير المرتبطة بجلسة.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        أصل الوجه المطابق: `session`، أو `imported` (تحميل وجه
                        المستخدم User)، أو `list_entry` (قائمة السماح/الحظر)، أو
                        `retained_template` (قالب بيومتري خالٍ من الصور محفوظ
                        لدى User، مدرج تحت `/v3/biometric-templates/`).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
              face_quality:
                type: number
                nullable: true
                description: درجة جودة صورة الوجه (0-100%). متاحة فقط لكشف الحيوية السلبي.
              face_luminance:
                type: number
                nullable: true
                description: درجة إضاءة/سطوع الوجه (0-100%). متاحة فقط لكشف الحيوية السلبي.
        face_matches:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير مطابقة الوجه** التي تم إنشاؤها بواسطة خطوات
            مطابقة الوجه في مخطط سير العمل. دائماً ما تكون مصفوفة JSON — وليست
            كائن `face_match` مفرداً أبداً. تكون `null` حتى تنتج خطوة مطابقة وجه
            واحدة على الأقل بيانات. يمثل كل عنصر التقرير الكامل، بما في ذلك
            `node_id`، و`status` على مستوى الميزة، و`score` التشابه،
            و`source_image`، و`target_image`، و`warnings[]`.
          items:
            type: object
            description: تقرير مطابقة وجه واحد — التقرير الكامل.
            properties:
              node_id:
                type: string
                description: >-
                  معرّف عقدة مخطط سير العمل لخطوة مطابقة الوجه التي أنتجت هذا
                  التقرير.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  حالة مستوى الميزة لخطوة مطابقة الوجه هذه. مستقلة عن `status`
                  الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى قرارها العام
                  بينما تظل الميزة الفردية `In Review`.
              score:
                type: number
                description: درجة الثقة لمطابقة الوجه
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  معرّف الجلسة الذي تُخزّن تحته الصورة الشخصية المصدرية
                  (المرجعية). في تدفقات المصادقة البيومترية، يكون هذا هو معرّف
                  الجلسة نفسها (تُخزّن الصورة الشخصية المرسلة تحت الجلسة
                  الجديدة). يكون `null` عندما تكون الصورة المصدر هي الصورة
                  الشخصية للمستند في الجلسة نفسها.
              source_image:
                type: string
                format: uri
                description: رابط URL لصورة المصدر المستخدمة للمقارنة
              target_image:
                type: string
                format: uri
                description: رابط URL للصورة المستهدفة المستخدمة للمقارنة
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
                description: تحذيرات التحقق من مطابقة الوجه
              face_coverage:
                type: object
                nullable: true
                description: >-
                  ما إذا كانت مناطق العينين والفم والوجه مغطاة في الصورة
                  الملتقطة. يُعاد بواسطة `GET /v3/session/{sessionId}/decision/`
                  فقط؛ وهو ليس جزءاً من payload الخاصة بـ webhook. وتكون `null`
                  عند عدم وجود قراءة للتغطية.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          تعني القيمة `false` أن القراءة هي دليل ظلّي فقط ولا
                          يؤدي أي تحذير إلى اتخاذ إجراء بناءً عليها.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          تعني القيمة `false` أن القراءة هي دليل ظلّي فقط ولا
                          يؤدي أي تحذير إلى اتخاذ إجراء بناءً عليها.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          تعني القيمة `false` أن القراءة هي دليل ظلّي فقط ولا
                          يؤدي أي تحذير إلى اتخاذ إجراء بناءً عليها.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير التحقق من رقم الهاتف** — دائماً ما تكون مصفوفة
            JSON، وليست كائن `phone` مفرداً أبداً. تكون `null` حتى تنتج خطوة
            هاتف واحدة على الأقل بيانات. يمثل كل عنصر التقرير الكامل، بما في ذلك
            `node_id`، و`status` على مستوى الميزة، ورقم الهاتف والبيانات الوصفية
            للدولة، و`lifecycle[]`، و`matches[]`، و`warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: المعرّف الفريد لخطوة الهاتف هذه في مخطط سير العمل.
              status:
                type: string
                description: >-
                  حالة مستوى الميزة لخطوة التحقق من رقم الهاتف هذه. مستقلة عن
                  `status` الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى
                  قرارها العام بينما تظل الميزة الفردية `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: بادئة رمز الاتصال بالدولة
              phone_number:
                type: string
                description: رقم الهاتف بدون رمز الدولة
              full_number:
                type: string
                description: رقم الهاتف الكامل مع رمز الدولة
              country_code:
                type: string
                description: رمز الدولة المكون من حرفين (ISO 3166-1 alpha-2)
              country_name:
                type: string
                description: اسم الدولة الكامل
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: اسم شركة الاتصالات
                  type:
                    type: string
                    description: نوع خط الهاتف (جوال، خط أرضي، إلخ)
              is_disposable:
                type: boolean
                description: ما إذا كان رقم الهاتف من خدمة أرقام مؤقتة
              is_virtual:
                type: boolean
                description: ما إذا كان رقم الهاتف افتراضياً
              verification_method:
                type: string
                description: الطريقة المستخدمة للتحقق من رقم الهاتف
              verification_attempts:
                type: integer
                description: عدد محاولات التحقق التي تم إجراؤها
              verified_at:
                type: string
                format: date-time
                description: الطابع الزمني للتحقق من رقم الهاتف
              lifecycle:
                type: array
                description: قائمة زمنية بالأحداث في دورة حياة التحقق من رقم الهاتف.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        الـ payload الخاص بالحدث. تحمل أحداث الإرسال `status`
                        و`reason` و`channel` و`actual_channel`؛ وتحمل أحداث
                        التسليم `channel` و`status`؛ وتحمل أحداث التحقق من الرمز
                        `code_tried` و`status`؛ وتحمل أحداث الحالة النهائية
                        `reason` — أو `null` عندما لا يكون هناك سبب للإبلاغ عنه
                        (مثل `PHONE_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        channel:
                          type: string
                          nullable: true
                        actual_channel:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              warnings:
                type: array
                description: قائمة بالتحذيرات المتعلقة بالتحقق من رقم الهاتف
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
              matches:
                type: array
                description: >-
                  التطابقات التي تم العثور عليها لرقم الهاتف هذا. كل تطابق له
                  `source`: إما `session` (جلسة تحقق أخرى في تطبيقك تطابقت مع
                  الرقم نفسه، وتُرجع مع
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  أو `list_entry` (الرقم موجود في قائمة سماح/حظر تديرها المؤسسة
                  — راجع `/management-api/lists/overview`). تستخدم التطابقات عبر
                  الجلسات `vendor_data` مختلفة ويبلغ الحد الأقصى لها 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    phone_number:
                      type: string
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        مصدر هذا التطابق. تعني `session` أن جلسة تحقق أخرى في
                        تطبيقك تطابقت مع هذه القيمة. تعني `list_entry` أن القيمة
                        طابقت قائمة تديرها المؤسسة (قائمة السماح/قائمة الحظر) —
                        راجع النظرة العامة على قوائم Management API على
                        `/management-api/lists/overview` لمعرفة كيفية إدارة هذه
                        القوائم.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: >-
                  إشارات معلومات الهاتف. تتوفر فقط عند تشغيل الإضافة الخاصة
                  بمعلومات الهاتف لهذا الرقم.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: >-
                  البصمة الاجتماعية للرقم. تظهر فقط عند تشغيل الميزة الإضافية
                  للبصمة الاجتماعية لهذا الرقم.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير التحقق من البريد الإلكتروني** — دائماً ما تكون
            مصفوفة JSON، وليست كائن `email` مفرداً أبداً. تكون `null` حتى تنتج
            خطوة بريد إلكتروني واحدة على الأقل بيانات. يمثل كل عنصر التقرير
            الكامل، بما في ذلك `node_id`، و`status` على مستوى الميزة، وعنوان
            البريد الإلكتروني، وبيانات الاختراق، و`lifecycle[]`، و`matches[]`،
            و`warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: المعرّف الفريد لخطوة البريد الإلكتروني هذه في مخطط سير العمل.
              status:
                type: string
                description: >-
                  حالة مستوى الميزة لخطوة التحقق من البريد الإلكتروني هذه.
                  مستقلة عن `status` الجلسة من المستوى الأعلى — يمكن أن تصل
                  الجلسة إلى قرارها العام بينما تظل الميزة الفردية `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: عنوان البريد الإلكتروني الجاري التحقق منه
              is_breached:
                type: boolean
                description: >-
                  يشير إلى ما إذا كان البريد الإلكتروني قد تم العثور عليه في
                  تسريبات بيانات معروفة
              breaches:
                type: array
                description: >-
                  قائمة بالخروقات المعروفة التي تم العثور على هذا البريد
                  الإلكتروني فيها
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: اسم الاختراق
                    domain:
                      type: string
                      description: النطاق المتأثر بالاختراق
                    logo_path:
                      type: string
                      description: رابط URL لشعار الخدمة المخترقة
                    breach_date:
                      type: string
                      format: date
                      description: تاريخ حدوث الانتهاك
                    description:
                      type: string
                      description: وصف المخالفة
                    is_verified:
                      type: boolean
                      description: ما إذا كان قد تم التحقق من الاختراق
                    data_classes:
                      type: array
                      description: أنواع البيانات التي تم كشفها في عملية الاختراق
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: عدد عناوين البريد الإلكتروني المتأثرة في الاختراق
              is_disposable:
                type: boolean
                description: يشير إلى ما إذا كان البريد الإلكتروني من مزود بريد مؤقت
              is_undeliverable:
                type: boolean
                description: يشير إلى ما إذا كان عنوان البريد الإلكتروني غير قابل للتسليم
              verification_attempts:
                type: integer
                description: عدد محاولات التحقق لهذا البريد الإلكتروني
              verified_at:
                type: string
                format: date-time
                description: الطابع الزمني للتحقق من البريد الإلكتروني
              warnings:
                type: array
                description: قائمة بالتحذيرات المتعلقة بالتحقق من البريد الإلكتروني
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
              lifecycle:
                type: array
                description: قائمة زمنية بالأحداث في دورة حياة التحقق من البريد الإلكتروني.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        الـ payload الخاص بالحدث. تحمل أحداث الإرسال `status`
                        و`reason`؛ وتحمل أحداث التحقق من الرمز `code_tried`
                        و`status`؛ وتحمل أحداث الحالة النهائية `reason` — أو
                        `null` عندما لا يكون هناك سبب للإبلاغ عنه (مثل
                        `EMAIL_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  التطابقات التي تم العثور عليها لعنوان البريد الإلكتروني هذا.
                  كل تطابق له `source`: إما `session` (جلسة تحقق أخرى في تطبيقك
                  تطابقت مع البريد الإلكتروني نفسه، وتُرجع مع
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  أو `list_entry` (البريد الإلكتروني موجود في قائمة سماح/حظر
                  تديرها المؤسسة — راجع `/management-api/lists/overview`).
                  تستخدم التطابقات عبر الجلسات `vendor_data` مختلفة ويبلغ الحد
                  الأقصى لها 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    email:
                      type: string
                      format: email
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        مصدر هذا التطابق. تعني `session` أن جلسة تحقق أخرى في
                        تطبيقك تطابقت مع هذه القيمة. تعني `list_entry` أن القيمة
                        طابقت قائمة تديرها المؤسسة (قائمة السماح/قائمة الحظر) —
                        راجع النظرة العامة على قوائم Management API على
                        `/management-api/lists/overview` لمعرفة كيفية إدارة هذه
                        القوائم.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: >-
                  إشارات معلومات البريد الإلكتروني. متوفرة فقط عند تشغيل الميزة
                  الإضافية لمعلومات البريد الإلكتروني لهذا العنوان.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: >-
                  البصمة الاجتماعية للعنوان. تظهر فقط عند تشغيل الميزة الإضافية
                  للبصمة الاجتماعية لهذا العنوان.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير إثبات العنوان (POA)** — دائماً ما تكون مصفوفة
            JSON، وليست كائن `poa` مفرداً أبداً. تكون `null` حتى تنتج خطوة إثبات
            عنوان واحدة على الأقل بيانات. يمثل كل عنصر التقرير الكامل، بما في
            ذلك `node_id`، و`status` على مستوى الميزة، وعنوان URL لملف المستند،
            والجهة المصدرة، والتواريخ، والعنوان المحلل، و`warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: معرّف فريد لخطوة إثبات العنوان هذه في مخطط سير العمل.
              status:
                type: string
                description: >-
                  حالة مستوى الميزة لخطوة إثبات العنوان هذه. مستقلة عن `status`
                  الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى قرارها العام
                  بينما تظل الميزة الفردية `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: رابط URL لمستند إثبات العنوان
              issuing_state:
                type: string
                description: رمز الدولة المكون من حرفين لدولة الإصدار
              document_type:
                type: string
                description: نوع مستند إثبات العنوان
              document_subtype:
                type: string
                nullable: true
                description: >-
                  تصنيف أكثر دقة لمستند POA ضمن `document_type` الخاص به، عند
                  اكتشاف أحدها. ويكون `null` بخلاف ذلك.
              document_language:
                type: string
                description: رمز لغة المستند
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: حجم المستند
                  content_type:
                    type: string
                    description: نوع محتوى المستند
                  creation_date:
                    type: string
                    format: date
                    description: تاريخ إنشاء المستند
                  modified_date:
                    type: string
                    format: date
                    description: تاريخ تعديل المستند
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      التحليل الجنائي لملفات PDF للتلاعب المشتبه به في النص
                      المتراكب. القيمة Null عند عدم العثور على أي دليل تلاعب
                      بالنص المتراكب أو إذا لم يكن المستند بصيغة PDF.
                    properties:
                      detected:
                        type: boolean
                        description: ما إذا تم اكتشاف دليل على التلاعب بالنص المتراكب.
                      analyzed:
                        type: boolean
                        description: ما إذا كان قد أمكن تحليل ملف PDF.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          يكون الحقل موجودًا وقيمته صحيحة فقط عندما يتعذر فحص
                          الملف بالكامل. يحتفظ الجزء الذي تم فحصه بنتائجه حيثما
                          أمكن، ويُظهر المستند تحذير استبدال النص غير المُثبت.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          إشارات الفحص الجنائي التي تم إطلاقها، مثل
                          duplicate_font_subset أو glyph_fragmentation.
                      manipulated_regions:
                        type: array
                        description: المناطق المشتبه في التلاعب بها بإحداثيات صفحة PDF.
                        items:
                          type: object
                          properties:
                            page:
                              type: integer
                            x:
                              type: number
                            'y':
                              type: number
                            width:
                              type: number
                            height:
                              type: number
                            page_width:
                              type: number
                            page_height:
                              type: number
                  creator:
                    type: string
                    nullable: true
                    description: التطبيق المنشئ المسجل في بيانات المستند الوصفية.
                  producer:
                    type: string
                    nullable: true
                    description: برنامج الإنشاء المسجل في بيانات التعريف لملف PDF.
                  software:
                    type: string
                    nullable: true
                    description: برنامج التحرير/المعالجة المسجل في البيانات الوصفية للملف.
                  encryption:
                    type: string
                    nullable: true
                    description: مخطط تشفير المستند، عندما يكون مشفراً.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: ما إذا كان ملف PDF يحمل توقيعاً رقمياً.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: >-
                      ما إذا كان التحقق من التوقيع يشير إلى تعديل الملف بعد
                      التوقيع.
                  signature_info:
                    type: object
                    nullable: true
                    description: تفاصيل التوقيع/التوقيعات الرقمية، إن وُجدت.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: تاريخ الالتقاط الأصلي في EXIF، لعمليات تحميل الصور.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: تاريخ الرقمنة في EXIF، لعمليات تحميل الصور.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: >-
                      ما إذا كانت البيانات الوصفية للملف تشير إلى معالجة بواسطة
                      برنامج تعديل مستندات معروف.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: >-
                      ما إذا كان تاريخ الإنشاء وتاريخ التعديل مختلفين — وهي
                      إشارة شائعة على التلاعب.
                description: >-
                  بيانات وصفية للتحليل الجنائي للملفات مستخرجة من مستند POA الذي
                  تم تحميله. تحتوي دائماً على المفاتيح أدناه (القيم تكون `null`
                  عندما لا تكون قابلة للتطبيق، مثل تواريخ EXIF لملفات PDF). تكون
                  `null` عندما يتعذر استخراج أي بيانات وصفية.
                nullable: true
              issuer:
                type: string
                description: اسم جهة إصدار المستند
              issue_date:
                type: string
                format: date
                description: تاريخ إصدار المستند
              expiration_date:
                type: string
                format: date
                nullable: true
                description: تاريخ انتهاء المستند، إن وجد
              poa_address:
                type: string
                description: العنوان الخام من مستند إثبات العنوان
              poa_formatted_address:
                type: string
                description: العنوان المنسق من مستند إثبات العنوان
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: نوع العنوان (شارع، جادة، إلخ)
                  street_1:
                    type: string
                    description: عنوان الشارع الأساسي
                  street_2:
                    type: string
                    nullable: true
                    description: عنوان الشارع الثانوي
                  city:
                    type: string
                    description: اسم المدينة
                  region:
                    type: string
                    description: اسم المنطقة أو الولاية
                  country:
                    type: string
                    description: رمز الدولة المكون من حرفين
                  postal_code:
                    type: string
                    description: الرمز البريدي
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: إحداثي خط العرض
                      longitude:
                        type: number
                        description: إحداثي خط الطول
              name_on_document:
                type: string
                nullable: true
                description: >-
                  اسم صاحب الحساب / المرسل إليه المستخرج من مستند POA، والمستخدم
                  لمطابقة الاسم. يكون `null` عندما يتعذر استخراج أي اسم.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  درجة التشابه (0-100) بين `name_on_document` والاسم المتوقع
                  المقدَّم عند إنشاء الجلسة. تكون `null` عند فقدان أي من
                  الطرفين.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  درجة التشابه (0-100) بين `name_on_document` والاسم المستخرج
                  بواسطة خطوة التحقق من الهوية. تكون `null` عند فقدان أي من
                  الطرفين.
              expected_details_address:
                type: string
                nullable: true
                description: العنوان الخام المتوقع للتحقق
              expected_details_formatted_address:
                type: string
                nullable: true
                description: العنوان المنسق المتوقع للتحقق
              expected_details_parsed_address:
                type: object
                description: تفاصيل العنوان المُحلل المتوقعة للتحقق
              extra_fields:
                type: object
                description: تفاصيل مصرفية وتفاصيل اتصال إضافية تم استخراجها من المستند.
                properties:
                  bank_account_number:
                    type: string
                    nullable: true
                  bank_iban:
                    type: string
                    nullable: true
                  bank_sort_code:
                    type: string
                    nullable: true
                  bank_routing_number:
                    type: string
                    nullable: true
                  bank_swift_bic:
                    type: string
                    nullable: true
                  bank_branch_name:
                    type: string
                    nullable: true
                  bank_branch_address:
                    type: string
                    nullable: true
                  document_phone_number:
                    type: string
                    nullable: true
                  additional_names:
                    type: array
                    items:
                      type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: ملفات إضافية لإثبات العنوان
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
              detected_codes:
                type: array
                description: >-
                  رموز QR والرموز الشريطية المكتشفة في كل صفحة تمت معالجتها من
                  المستند. تكون فارغة عند عدم العثور على أي منها. رمز QR الذي تم
                  تحديد مكانه ولكن تعذر فك تشفيره يحتوي على `parsed_payload:
                  null`.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  التحقق من صحة العنوان للعنوان الوارد في إثبات العنوان هذا: ما
                  إذا كان موجوداً وصيغته الموحدة، كما قرأها المستند (أي تصحيح
                  لاحق لـ `poa_address` لا يعيد تشغيله). يظهر عندما تُفعّل خطوة
                  إثبات العنوان هذه الميزة الإضافية للتحقق من العنوان وتجتاز
                  الملفات المرفوعة فحوصات المستند؛ ويكون `null` بخلاف ذلك.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **تقارير Document AI مجمّعة حسب عقدة سير العمل** — تكون دائماً
            مصفوفة JSON، وليست كائناً مفرداً أبداً. وتكون `null` حتى تنتج خطوة
            Document AI واحدة على الأقل بيانات. تظهر فقط عندما يكون
            `session_kind = user`. كل عنصر هو مجموعة عقدة مع `status` إجمالي،
            و`node_id`، ومصفوفة `items[]` لنتائج كل مستند (البيانات المستخرجة
            مرتبطة بمفتاح الحقل المكوّن)، و`warnings`.
          items:
            type: object
            description: نتائج Document AI مجمعة حسب عقدة سير العمل.
            properties:
              status:
                type: string
                description: >-
                  حالة Document AI المجمعة لهذه العقدة، تم جمعها من `items[]`
                  التابعة لها.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: معرّف فريد لخطوة Document AI هذه في مخطط سير العمل.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: عقدة مخطط سير العمل التي أنتجت هذا المستند.
                    document_key:
                      type: string
                      description: >-
                        مفتاح مستند Document AI المُعدّ الذي يتوافق معه هذا
                        الملف.
                    original_filename:
                      type: string
                      nullable: true
                      description: اسم الملف كما رفعه المستخدم.
                    file_size:
                      type: integer
                      nullable: true
                      description: حجم الملف بالبايت.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: رابط موقع مسبقاً قصير الأجل للملف المرفوع.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: حالة Document AI لكل مستند.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        القيم المستخرجة بواسطة Document AI، مفهرسة بمفتاح الحقل
                        المُهيّأ `key`. كل قيمة هي سلسلة نصية، أو رقم، أو
                        `null`.
                    detected_codes:
                      type: array
                      description: >-
                        رموز QR والرموز الشريطية المكتشفة في كل صفحة تمت
                        معالجتها. تكون فارغة عند عدم العثور على أي منها. رمز QR
                        الذي تم تحديد مكانه ولكن تعذر فك تشفيره يحتوي على
                        `parsed_payload: null`.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: حقول الاستخراج المُعدّة لهذا المستند.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: مفتاح حقل ثابت يُستخدم كمفتاح في `extracted_data`.
                          name:
                            type: string
                            description: اسم حقل سهل القراءة.
                          instruction:
                            type: string
                            description: تعليمات الاستخراج المعروضة على النموذج.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: نوع القيمة المتوقع للحقل المستخرج.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        بيانات وصفية للتحليل الجنائي للملفات مستخرجة من المستند
                        الذي تم تحميله (مثل `is_tampered`). تكون `null` عندما
                        يتعذر استخراج أي شيء.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        المطابقة المرجعية لحقول المستند المستخرجة مع بيانات
                        الجلسة الأخرى. وتكون القيمة `null` عند عدم إجراء أي
                        مطابقة مرجعية.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: سجلات التحذير الصادرة لعقدة Document AI هذه.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير إجابات الاستبيانات** — دائماً ما تكون مصفوفة
            JSON، وليست كائن `questionnaire` مفرداً أبداً. تكون `null` حتى تنتج
            خطوة استبيان واحدة على الأقل بيانات. يمثل كل عنصر التقرير الكامل،
            بما في ذلك `node_id`، والبيانات الوصفية للاستبيان، والأقسام التي
            تحتوي على عناصر النموذج، وإجابات المستخدم.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: المعرّف الفريد لخطوة الاستبيان هذه في مخطط سير العمل.
              questionnaire_id:
                type: string
                description: معرّف فريد للاستبيان
              title:
                type: string
                description: عنوان الاستبيان
              description:
                type: string
                description: وصف الاستبيان
              languages:
                type: array
                items:
                  type: string
                description: اللغات المدعومة
              default_language:
                type: string
                description: اللغة الافتراضية
              is_active:
                type: boolean
                description: ما إذا كان الاستبيان نشطاً
              is_simple_questionnaire:
                type: boolean
                description: ما إذا كان الاستبيان نموذجاً خطياً بسيطاً (بدون مخطط متفرع).
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: معرّف ثابت لمجموعة الاستبيانات عبر الإصدارات.
              version:
                type: integer
                nullable: true
                description: رقم إصدار الاستبيان الذي تمت الإجابة عليه.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: الطابع الزمني لنشر هذا الإصدار من الاستبيان.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: عنوان القسم
                    description:
                      type: string
                      nullable: true
                      description: وصف القسم
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: معرّف فريد للعنصر
                          value:
                            type: string
                            nullable: true
                            description: >-
                              معرّف العقدة الثابت لعنصر النموذج هذا ضمن مخطط
                              الاستبيان.
                          element_type:
                            type: string
                            description: نوع عنصر الاستبيان
                          is_required:
                            type: boolean
                            description: ما إذا كان العنصر مطلوباً
                          title:
                            type: string
                            description: عنوان العنصر
                          description:
                            type: string
                            nullable: true
                            description: وصف العنصر
                          placeholder:
                            type: string
                            nullable: true
                            description: نص العنصر النائب
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: ما إذا كان هذا الخيار يتطلب إدخال نص إضافي
                                  nullable: true
                              required:
                                - label
                                - value
                            description: خيارات القائمة المنسدلة أو عناصر الاختيار الفردي
                          max_files:
                            type: integer
                            description: الحد الأقصى لعدد الملفات المسموح بها
                            nullable: true
                          answer:
                            type: object
                            description: الإجابة المقدمة للعنصر
                            properties:
                              value:
                                type: string
                                nullable: true
                              text:
                                type: string
                                nullable: true
                              files:
                                type: array
                                items:
                                  type: string
                                nullable: true
                          required_if:
                            type: object
                            nullable: true
                            description: >-
                              قاعدة المتطلبات الشرطية، عندما يكون العنصر مطلوباً
                              فقط لإجابات معينة.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: >-
                              تكوين مجموعات العناصر القابلة للتكرار، عند
                              الاقتضاء.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: حالة الاستبيان
        bank_verifications:
          type: array
          nullable: true
          description: >-
            نتائج التحقق البنكي، عنصر واحد لكل خطوة تحقق بنكي، للتحقق من
            المستخدمين والتحقق من الشركات. تكون `null` حتى تُنتج خطوة نتيجة ما.
            يوضح حقل `method` لكل عنصر كيفية التحقق من الحساب: `open_banking`
            (تسجيل الدخول إلى البنك) أو `account_lookup` (فحص الحساب)، أو خيار
            بديل عبر `statement` أو `microdeposits`، و`none` عندما يتابع الشخص
            دون بنك قبل تقييم أي محاولة (`continued_without_bank`). راجع [طرق
            التحقق
            البنكي](/ar/core-technology/bank-verification/verification-methods).
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            نتائج التوقيع الإلكتروني، عنصر واحد لكل موقّع وخطوة توقيع، لكل من
            التحقق من المستخدمين والتحقق من الشركات (KYB). لا تظهر إلا عندما
            يتضمن سير العمل خطوة التوقيع الإلكتروني؛ وهي مصفوفة فارغة حتى يصل
            أحد الموقّعين إليها. راجع [تقرير التوقيع
            الإلكتروني](/ar/core-technology/electronic-signature/report-electronic-signature).
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **مصفوفة تقارير فحص AML** — دائماً مصفوفة JSON، وليست أبداً كائن
            `aml` مفرداً. تكون `null` إلى أن تُنتج خطوة AML واحدة على الأقل
            بيانات. كل عنصر هو التقرير الكامل، بما يشمل `node_id`، و`status` على
            مستوى الميزة، و`total_hits`، و`entity_type`، و`hits[]`، و`score`،
            و`screened_data`، و`is_ongoing_monitoring_enabled`، و`warnings[]`.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **مصفوفة من تقارير تحليل الجهاز وعنوان IP** — دائماً ما تكون مصفوفة
            JSON، وليست كائن `ip_analysis` مفرداً أبداً. تكون `null` حتى تنتج
            خطوة واحدة على الأقل من خطوات تحليل IP بيانات. يمثل كل عنصر التقرير
            الكامل، بما في ذلك `node_id`، و`status` على مستوى الميزة، وبيانات IP
            وتحديد الموقع الجغرافي، وبصمة الجهاز، و`warnings[]`. يتم إزالة
            التكرار من المدخلات ذات `(node_id, ip_address, device_fingerprint)`
            المكررة من جانب الخادم.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: معرّف فريد لخطوة تحليل الجهاز وعنوان IP هذه في مخطط سير العمل.
              status:
                type: string
                description: >-
                  حالة مستوى الميزة لمدخل تحليل الجهاز وعنوان IP هذا. مستقلة عن
                  `status` الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى
                  قرارها العام بينما تظل الميزة الفردية `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: علامة الجهاز المستخدم التجارية
              device_model:
                type: string
                description: طراز الجهاز المستخدم
              browser_family:
                type: string
                description: عائلة المتصفح المستخدم
              os_family:
                type: string
                description: عائلة نظام التشغيل
              platform:
                type: string
                description: نوع المنصة (mobile، desktop، وما إلى ذلك)
              device_fingerprint:
                type: string
                nullable: true
                description: المعرّف الفريد لبصمة الجهاز
              ip_country:
                type: string
                description: الدولة المكتشفة من عنوان IP
              ip_country_code:
                type: string
                description: رمز الدولة المكون من حرفين المستخرج من عنوان IP
              ip_state:
                type: string
                description: الولاية/المنطقة المكتشفة من عنوان IP
              ip_city:
                type: string
                description: المدينة المكتشفة من عنوان IP
              latitude:
                type: number
                description: إحداثي خط العرض لموقع عنوان IP
              longitude:
                type: number
                description: إحداثي خط الطول لموقع عنوان IP
              ip_address:
                type: string
                description: عنوان IP
              isp:
                type: string
                nullable: true
                description: مزود خدمة الإنترنت
              organization:
                type: string
                nullable: true
                description: المؤسسة المرتبطة بعنوان IP
              is_vpn_or_tor:
                type: boolean
                description: ما إذا كان عنوان IP صادراً من VPN أو شبكة Tor
              is_data_center:
                type: boolean
                description: ما إذا كان عنوان IP صادراً من مركز بيانات
              time_zone:
                type: string
                description: المنطقة الزمنية المكتشفة من عنوان IP
              time_zone_offset:
                type: string
                description: فارق التوقيت للمنطقة الزمنية
              ip:
                type: object
                description: >-
                  الموقع الجغرافي لعنوان IP لهذا الإدخال بالإضافة إلى مسافات
                  الدائرة العظمى (بالكيلومتر) إلى عنوان مستند التحقق من الهوية
                  وعنوان مستند إثبات العنوان (POA). تكون المسافات `null` عندما
                  يتعذر تحديد الموقع لأي من الجانبين.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: الإحداثيات، أو `null` عند عدم توفرها.
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 12.3
              id_document:
                type: object
                description: >-
                  الموقع المستخرج من عنوان مستند الهوية بالإضافة إلى المسافات
                  (كم) إلى الموقع الجغرافي لعنوان IP وعنوان مستند إثبات العنوان
                  (POA). يكون `location` بقيمة `null` عندما يتعذر تحديد الموقع
                  الجغرافي لعنوان المستند.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: الإحداثيات، أو `null` عند عدم توفرها.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 18.7
              poa_document:
                type: object
                description: >-
                  الموقع المستخرج من مستند إثبات العنوان بالإضافة إلى المسافات
                  (كم) إلى الموقع الجغرافي لعنوان IP وعنوان مستند الهوية. يكون
                  `location` بقيمة `null` عندما لا تتضمن الجلسة خطوة POA أو
                  يتعذر تحديد الموقع الجغرافي للعنوان.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: الإحداثيات، أو `null` عند عدم توفرها.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 12.3
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 18.7
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
              matches:
                type: array
                description: >-
                  حالات التطابق عبر الجلسات التي تم العثور عليها لعنوان IP أو
                  هوية الجهاز الخاصة بهذه المدخلة. كل تطابق هو جلسة تحقق أخرى في
                  تطبيقك (تكون قيمة `source` دائماً `session`) تشترك في القيمة
                  نفسها، وتنتمي دائماً إلى مستخدم مورّد / `vendor_data` مختلف عن
                  الجلسة الحالية، بحد أقصى 5 لكل أداة جمع (`device_fingerprint`
                  يجمع نتيجتي أداتي جمع مستقلتين لكل منهما حد أقصى، لذا يمكن أن
                  يصل العدد إلى 10 مدخلات). يحمل كل عنصر `match_source`
                  و`confidence` و`match_mode` و`device_info` و`location_info`؛
                  وتظهر المفاتيح `recovery_similarity` و`tls_ja4_corroborated`
                  و`recovery_gate_reason` فقط عندما تكون قيمة `match_source` هي
                  `recovered_high`.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: معرّف الجلسة للجلسة المتطابقة.
                    session_number:
                      type: integer
                      description: الرقم التسلسلي للجلسة المتطابقة.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` للجلسة المطابقة — تختلف دائماً عن مستخدم
                        المورّد للجلسة الحالية.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: تاريخ إنشاء الجلسة المتطابقة (`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: ما إذا كان التطابق بناءً على عنوان IP أو بصمة الجهاز
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        كيفية الوصول إلى هذا التطابق: `ip_address` (عنوان IP
                        مشترك — وجود مشترك على الشبكة، وليس إقراراً بهوية
                        الجهاز)، أو `persistent_id` (معرّف جهاز دائم مخزّن بشكل
                        مطابق)، أو `legacy_fp` (تجزئة بصمة الجهاز القديمة
                        `didit-fp-*`)، أو `recovered_high` (تطابق استرداد بصمة
                        تقريبي عالي الثقة). تظهر العناصر المرشحة للاسترداد ذات
                        الثقة الأقل كتحذيرات مخاطر فقط، ولا تظهر مطلقاً في هذه
                        المصفوفة.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        القيمة المتطابقة: عنوان IP المشترك، أو معرّف الجهاز
                        الدائم أو تجزئة بصمة الجهاز القديمة، أو — بالنسبة لـ
                        `recovered_high` — معرّف UUID للجهاز المسترد.
                    status:
                      type: string
                      description: حالة دورة حياة الجلسة المتطابقة.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        ما إذا كانت القيمة المتطابقة موجودة في قائمة الحظر.
                        حالياً تكون دائماً `false` لتطابقات الجهاز/عنوان IP.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        خدمة API المستقلة للجلسة المطابقة؛ وتكون القيمة `null`
                        لجلسات سير العمل.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        دائماً `session` لمطابقات الجهاز/عنوان IP — كل مطابقة
                        تمثل جلسة تحقق أخرى في تطبيقك.
                    device_info:
                      type: object
                      description: تفاصيل الجهاز التي رُصدت في الجلسة المتطابقة.
                      properties:
                        device_brand:
                          type: string
                          nullable: true
                        device_model:
                          type: string
                          nullable: true
                        browser_family:
                          type: string
                          nullable: true
                        os_family:
                          type: string
                          nullable: true
                        platform:
                          type: string
                          nullable: true
                        device_fingerprint:
                          type: string
                          nullable: true
                    location_info:
                      type: object
                      description: >-
                        تفاصيل الشبكة والموقع الجغرافي التي تمت ملاحظتها في جلسة
                        المطابقة.
                      properties:
                        ip_address:
                          type: string
                          nullable: true
                        ip_country:
                          type: string
                          nullable: true
                        ip_country_code:
                          type: string
                          nullable: true
                        ip_state:
                          type: string
                          nullable: true
                        ip_city:
                          type: string
                          nullable: true
                        is_vpn_or_tor:
                          type: boolean
                        is_data_center:
                          type: boolean
                    confidence:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: >-
                        درجة الثقة في تحديد الهوية من جانب الخادم، وتُحسب
                        كالتالي `1 - P(false positive)`: القيمة `1.0` لحالات
                        التطابق الحتمية (`persistent_id`، أو `recovered_high`
                        المستندة إلى العتاد)، و`0.5` لحالة `legacy_fp`، و`0.0`
                        لحالة `ip_address` (التواجد المشترك فقط)، وقيمة معدّلة
                        حسب التأييد أقل من `1.0` لحالات التطابق الاحتمالية
                        المسترجعة (تكون أعلى عندما تتطابق بصمة TLS JA4 ودولة IP
                        بشكل مستقل).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        فئة أدلة التطابق: `deterministic` (معرّف دقيق مخزن أو
                        متجذر في العتاد لا يمكن أن يتصادم بين الأجهزة الفعلية)،
                        أو `probabilistic` (دليل بصمة تقريبي)، أو
                        `co_occurrence` (شبكة مشتركة فقط، دون ادعاء هوية
                        الجهاز).
                    recovery_similarity:
                      type: number
                      description: >-
                        تشابه جيب التمام لمطابقة استعادة بصمة الإصبع، مقرّباً
                        إلى 4 منازل عشرية. يتوفر فقط عندما يكون `match_source`
                        هو `recovered_high`.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        ما إذا كانت بصمات TLS JA4 للملاحظتين متطابقة — وهي إشارة
                        يرصدها الخادم ولا يمكن للمتصفح انتحالها. تكون موجودة فقط
                        عندما تكون قيمة `match_source` هي `recovered_high`.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        سبب اجتياز مطابقة الاسترداد لبوابة الإيجابيات الكاذبة
                        الصارمة: `hardware_root_match` (تطابق تام لمعرّف جهاز
                        متجذر في العتاد) أو، في التكوينات التي تقبل أدلة الفحص
                        فقط، `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`. يظهر فقط عندما
                        يكون `match_source` هو `recovered_high`.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: سلسلة وكيل المستخدم الخاصة بالمتصفح.
              accept_language:
                type: string
                nullable: true
                description: رأس `Accept-Language` الذي أرسله المتصفح.
              session_identifier:
                type: string
                nullable: true
                description: معرّف جلسة التصفح التي تم تشغيل التحقق فيها.
              session_age_ms:
                type: integer
                nullable: true
                description: عمر جلسة التصفح تلك بالمللي ثانية عند تشغيل الخطوة.
              coords_accuracy:
                type: number
                nullable: true
                description: نصف قطر الدقة، بالأمتار، للإحداثيات التي أبلغ عنها الجهاز.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: إشارات الجهاز الخام التي تم جمعها لهذه الخطوة.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            **مصفوفة من نتائج التحقق من الموقع**، نتيجة واحدة لكل خطوة تحقق من
            الموقع: المحاولة المقبولة لتلك الخطوة. تكون `null` حتى تنتج خطوة
            تحقق من الموقع بيانات. توجد المحاولات السابقة للخطوة نفسها في
            `geolocation_attempts`.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            كل محاولة لكل خطوة تحقق من الموقع في هذه الجلسة، الأقدم أولاً. يتم
            استبعاد المحاولات التي استُبدلت بإعادة الإرسال. وسير العمل الذي يحجب
            `geolocation_checks` من خلال سمات الاستجابة الخاصة به يحجب هذه
            القائمة أيضاً.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **مصفوفة تقارير التحقق من قواعد البيانات** — دائماً مصفوفة JSON،
            وليست أبداً كائن `database_validation` مفرداً. تكون `null` حتى تُنتج
            خطوة تحقق من قاعدة البيانات واحدة على الأقل بياناتٍ. كل عنصر هو
            التقرير الكامل، بما في ذلك `node_id`، و`status` على مستوى الميزة،
            و`screened_data`، ومصفوفة `validations[]` لكل خدمة (يحتوي كل منها
            على `source_data` الخاص بالسجل)، و`warnings[]`. تختلف حقول
            `screened_data` و`source_data` بحسب الدولة:


            **ARG (الأرجنتين)**: screened_data: {document_number, selfie,
            gender, first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, date_of_death,
            tax_id, tax_id_type, face_match_score, sit_1_since, banks,
            last_position, highest_position, rejected_checks}. يستخدم التحقق
            البيومتري لمطابقة الوجه من RENAPER. يُستنتج الجنس تلقائياً من تحليل
            الوجه أو الاسم الأول عندما لا يكون متوفراً في المستند (مثل رخص
            القيادة)


            **BOL (بوليفيا)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender}


            **BRA (البرازيل)**: screened_data: {tax_number, first_name,
            last_name, date_of_birth}. يتضمن source_data دائماً
            {identification_number, first_name, last_name, date_of_birth,
            lgpd_minor, minor_under_18, minor_under_16} لعمليات تطابق CPF
            الناجحة. تُعيّن عمليات البحث الناجحة للبالغين تلك العلامات إلى
            false. قد تُرجع خدمة Receita Federal Consulta CPF الرمز HTTP 422
            (قاصر دون 18 عاماً) أو 451 (دون 16 عاماً) مع حجب البيانات بموجب
            LGPD؛ في هذه الحالات، يُعيّن source_data علامات القاصرين إلى true
            بحسب الاقتضاء، ويتضمن حالة HTTP الواردة، ويكون التحقق على مستوى
            الحقل no_match. راجع قسم البرازيل في مرجع رموز نتائج التحقق من قواعد
            البيانات للاطلاع على القائمة الكاملة للرموز.


            **CHL (تشيلي)**: screened_data: {personal_number, first_name,
            last_name, date_of_birth}. source_data: {identification_number,
            first_name, last_name, date_of_birth, gender}


            **COL (كولومبيا)**: screened_data: {document_number, document_type,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, document_type}


            **CRI (كوستاريكا)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **DOM (جمهورية الدومينيكان)**: screened_data: {personal_number}.
            source_data: {identification_number} (يُرجع valid/invalid فقط)


            **ECU (الإكوادور)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, street, formatted_address, gender, nationality,
            education, marital_status, spouse, mother_name, father_name,
            profession}


            **ESP (إسبانيا)**: screened_data: {personal_number, document_type,
            expiration_date, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name,
            document_type, expiration_date}


            **GTM (غواتيمالا)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **HND (هندوراس)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **MEX (المكسيك)**: screened_data: {personal_number (CURP),
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender,
            nationality, curp_status, state_of_birth, doc_probatorio,
            registration_year, registration_state, registration_municipality,
            num_acta, crip, issuing_state_code, foreign_registry_number,
            folio_carta, folio_certificado}. يستخدم السجل المدني RENAPO. تتوفر
            أيضاً خدمة منفصلة للتحقق من صلاحية INE لـ MEX كعملية تحقق فردية
            إضافية.


            **PAN (بنما)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. يستخدم التحقق البيومتري من SIB


            **PER (بيرو)**: screened_data: {personal_number (DNI), first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, paternal_name, maternal_name, verification_number,
            verification_letter}


            **PRY (باراغواي)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **SLV (السلفادور)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **URY (أوروغواي)**: screened_data: {personal_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **VEN (فنزويلا)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name, gender, date_of_birth, document_type}
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  المعرّف الفريد لخطوة التحقق من قواعد البيانات هذه في مخطط سير
                  العمل.
              issuing_state:
                type: string
                description: >-
                  رمز ISO 3166-1 alpha-3 للدولة التي تم الاستعلام عن مصادرها
                  الحكومية/سجلاتها (مثل `BRA` و`MEX` و`ESP` و`NGA` و`IDN`). يغطي
                  التحقق من قواعد البيانات 60+ دولة عبر الأمريكتين وأوروبا
                  وإفريقيا والشرق الأوسط وآسيا والمحيط الهادئ، بالإضافة إلى
                  مصادر عالمية متعددة الدول — وتتوسع التغطية بانتظام، لذا تعامل
                  مع القيمة كمجموعة مفتوحة بدلاً من تعداد ثابت.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  كيفية تأكيد النتيجة: `one_by_one` (نتيجة خدمة واحدة)، أو
                  `two_by_two` (خدمتان مستقلتان أو أكثر طابقتا رقم التعريف
                  بالكامل بشكل مستقل)، أو `not_enabled` (يتم الاحتفاظ بها عندما
                  لا تُنتج أي خدمة تطابقاً قابلاً للاستخدام). لا تكون القيمة
                  `null` أبداً. تتوفر أوضاع التحقق البيومتري المخصصة 2x2 حالياً
                  لكل من `ECU` و`PER`.
              screened_data:
                type: object
                description: >-
                  بيانات الإدخال المستخدمة للتحقق. تختلف الحقول حسب الدولة —
                  راجع وثائق التحقق من قواعد البيانات
                  (`/core-technology/database-validation/overview`) للاطلاع على
                  التنسيقات الخاصة بكل دولة.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: 'البرازيل: CPF (11 رقماً)'
                  personal_number:
                    type: string
                    description: >-
                      تشيلي: RUT، جمهورية الدومينيكان: Cédula (11 رقماً)،
                      الإكوادور: Cédula (10 أرقام)، إسبانيا: DNI/NIE، المكسيك:
                      CURP (18 حرفاً)، بيرو: DNI (8 أرقام)، أوروغواي: CI
                  document_number:
                    type: string
                    description: >-
                      ARG: DNI، BOL: CI، COL: Cédula، GTM: DPI، HND: DNI، PAN:
                      Cédula، PRY: CI، SLV: DUI، VEN: Cédula
                  date_of_birth:
                    type: string
                    format: date
                  document_type:
                    type: string
                    description: 'COL: CC/CE/TI/NIT، ESP: ID/PASSPORT'
                  expiration_date:
                    type: string
                    format: date
                    description: مطلوب لـ ESP
              validations:
                type: array
                description: >-
                  إدخال واحد لكل خدمة سجل قدمت payload تحقق. يحدد كل إدخال
                  الخدمة (`service_id` و`service_name`) ويتضمن مقارنة
                  `validation` لكل حقل، والرمز `outcome_code` / التفصيل
                  `outcome_detail` الخاص بالخدمة عند الإبلاغ عنهما، وسجل الشركات
                  المُطبَّع في `source_data`.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: معرّف خدمة السجل التي أنتجت نتيجة التحقق هذه.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: اسم سهل القراءة لخدمة السجل.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: نتائج عمليات التحقق من صحة الحقول.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            نتيجة المطابقة للاسم الكامل (مثل: 'full_match'،
                            'partial_match'، 'no_match').
                        date_of_birth:
                          type: string
                          description: نتيجة المطابقة لتاريخ الميلاد.
                        identification_number:
                          type: string
                          description: نتيجة المطابقة لرقم الهوية.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        النتيجة المقروءة آلياً للبحث في السجل (مثل `MATCH`،
                        `NO_MATCH`، `PARTIAL_MATCH`، `INCONCLUSIVE`، ورموز خاصة
                        بالمصدر). تكون موجودة عندما يُبلغ عنها النظام.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: >-
                        تفسير سهل القراءة لـ `outcome_code`، عند تقديمه من
                        الخدمة.
                    source_data:
                      type: object
                      description: >-
                        البيانات المرجعة من قاعدة البيانات الحكومية. الحقول
                        الشائعة: identification_number، first_name، last_name،
                        full_name، date_of_birth، gender. حقول إضافية حسب
                        الدولة: تتضمن BRA دائمًا lgpd_minor وminor_under_18
                        وminor_under_16 عند تطابق CPF بنجاح؛ كما تتضمن حالة HTTP
                        المصدرية عند حجب بيانات CPF بموجب LGPD (HTTP 422/451).
                        وتضيف ECU الحقول street وformatted_address وnationality
                        وeducation وmarital_status وspouse وmother_name
                        وfather_name وprofession. وتضيف PER الحقول paternal_name
                        وmaternal_name وverification_number
                        وverification_letter. وتضيف ESP الحقلين document_type
                        وexpiration_date. وتضيف VEN/COL الحقل document_type.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  الأخطاء التي أرجعتها خدمات السجلات أثناء التحقق، وتكون كل منها
                  موسومة بـ `service_id` الذي أنتجها. **يتم حذف هذا المفتاح
                  بالكامل عند عدم وجود أخطاء.**
                items:
                  type: object
                  description: >-
                    كائن الخطأ الخاص بالخدمة المصدر مفروداً كما هو — تختلف
                    مفاتيحه حسب الخدمة (عادةً رسالة/رمز وأي تفاصيل خاصة بمزود
                    الخدمة) — بالإضافة إلى `service_id` لتحديد الخدمة التي حدث
                    بها الخطأ.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: معرّف خدمة السجل التي واجهت خطأ.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: >-
                  النتيجة الإجمالية للتطابق عبر الخدمات التي تم الاستعلام عنها.
                  تكون `null` حتى يتم تقييم التحقق.
              status:
                type: string
                description: >-
                  حالة مستوى الميزة لعملية التحقق من قواعد البيانات هذه. مستقلة
                  عن `status` الجلسة من المستوى الأعلى — يمكن أن تصل الجلسة إلى
                  قرارها العام بينما تظل الميزة الفردية `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة
                        التي ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات
                        كل وحدة نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                        `phone_verifications[].warnings`)، ولكن التعداد (enum)
                        أعلاه هو المرجع المعتمد عبر جميع تحذيرات الميزات في
                        payload القرار.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
                description: التحذيرات المتعلقة بالتحقق من قواعد البيانات.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            سبب عدم إنتاج نتيجة من التحقق من قواعد البيانات المُهيأ، بتنسيق
            `{code, message}` بالإضافة إلى حقول السياق. يكون موجوداً فقط عندما
            يكون `database_validations` هو `null` لسير عمل يتضمن هذه الخطوة، حتى
            تتمكن من التمييز بين "وافق السجل" و"لم يتم تشغيل أي شيء". ويكون
            `null` في الحالات الأخرى.
          properties:
            code:
              type: string
              description: سبب ثابت قابل للقراءة آلياً.
            message:
              type: string
              description: تفسير سهل القراءة.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  من أجرى المراجعة. عادةً ما يكون معرّف المراجِع في لوحة التحكم
                  (بريده الإلكتروني)، ولكن القيمة تكون `"API Client"` لتحديثات
                  الحالة التي تتم باستخدام مفتاح API و`"Unknown"` عندما يتعذر
                  تحديد الفاعل — لذا لا تقم بمعالجة هذا الحقل كعنوان بريد
                  إلكتروني.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: >-
            المراجِع في لوحة التحكم المعين للجلسة، أو `null` عندما لا يحتفظ بها
            أحد.
          properties:
            email:
              type: string
              format: email
            assigned_at:
              type: string
              format: date-time
              nullable: true
        waiting_since:
          type: string
          format: date-time
          nullable: true
          description: >-
            متى بدأت الجلسة بالانتظار للمراجعة. وتكون `null` ما لم تكن الجلسة في
            حالة `In Review` ويحدد تطبيقك موعداً نهائياً للمراجعة.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            متى يحين موعد المراجعة. وتكون `null` ما لم تكن الجلسة في حالة `In
            Review` ويحدد تطبيقك موعداً نهائياً للمراجعة.
        created_at:
          type: string
          format: date-time
          description: الطابع الزمني لإنشاء الجلسة (ISO 8601، UTC).
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            الطابع الزمني المجدول لانتهاء صلاحية هذه الجلسة. يتم تعيينه في جلسات
            التحقق من المستخدمين (KYC) عندما تتم تهيئة انتهاء الصلاحية وقت
            الإنشاء (أو بمجرد أن تُشغّل حالة `Approved` احتساب انتهاء صلاحية
            KYC). يكون `null` للجلسات التي ليس لها انتهاء صلاحية مُهيأ، وللأنواع
            التي لا تستخدم انتهاء الصلاحية (مثل جلسات التحقق من الشركات (KYB)
            التي لم تتلقَ مطلقًا `expires_at`).
        registry_checks:
          type: array
          nullable: true
          description: >-
            عمليات التحقق من سجل الشركات. تكون موجودة فقط عندما تكون
            `session_kind = business`. يغلّف كل عنصر payload سجل الشركات
            بالكامل.
          items:
            type: object
            description: >-
              فحص سجل شركات واحد — الـ payload الكامل لسجل الشركات مُعززاً بهيكل
              الملكية والتحذيرات. يتوفر فقط عندما يكون `session_kind =
              business`.
            properties:
              status:
                type: string
                description: حالة دورة حياة الميزة.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  payload الكامل للشركة من السجل (سجل الشركات مدمجاً مع أي
                  بيانات يقدمها المستخدم أو يتم تعديلها عبر لوحة التحكم).
                properties:
                  uuid:
                    type: string
                    format: uuid
                  node_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                  registry_status:
                    type: string
                    nullable: true
                  data_resolved:
                    type: boolean
                  company_name:
                    type: string
                  registration_number:
                    type: string
                    nullable: true
                  country_code:
                    type: string
                    description: >-
                      دولة التأسيس (ISO 3166-1 alpha-2، مثل `GB` أو `DE` أو
                      `US`).
                  region:
                    type: string
                    nullable: true
                    description: >-
                      رمز التقسيم الإداري حسب معيار ISO 3166-2 عند انطباقه (على
                      سبيل المثال `CA`، و`NY` للولايات الأمريكية).
                  company_type:
                    type: string
                    nullable: true
                  incorporation_date:
                    type: string
                    format: date
                    nullable: true
                  registered_address:
                    type: string
                    nullable: true
                  tax_number:
                    type: string
                    nullable: true
                  risk_level:
                    type: string
                    enum:
                      - LOW
                      - MEDIUM
                      - HIGH
                    nullable: true
                  verification_status:
                    type: string
                    nullable: true
                  is_from_registry:
                    type: boolean
                  fetch_status:
                    type: string
                    nullable: true
                  alternative_names:
                    type: string
                    nullable: true
                    description: >-
                      أسماء الشركات البديلة، أو التجارية، أو السابقة، أو باللغة
                      الأصلية كنص، عند الإبلاغ عنها.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      مبلغ رأس المال المسجل/الأسهم كسلسلة نصية عشرية (مثل
                      `"100.00"`)، مُستخرجة من ملف السجل. وتكون `null` عند عدم
                      توفرها.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      رمز العملة حسب معيار ISO 4217 لـ
                      `registered_capital_amount` (مثل `"GBP"`). تكون القيمة
                      `null` عندما لا تتوفر.
                  website:
                    type: string
                    nullable: true
                  email:
                    type: string
                    format: email
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  legal_entity_identifier:
                    type: string
                    nullable: true
                  location_of_registration:
                    type: string
                    nullable: true
                  vat_number:
                    type: string
                    nullable: true
                    description: >-
                      رقم ضريبة القيمة المضافة في الاتحاد الأوروبي (EU VAT)، عند
                      جمعه أثناء خطوة السجل المستضافة أو تعديله لاحقاً.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      نتيجة التحقق من صحة رقم ضريبة القيمة المضافة أو، عند عدم
                      وجوده، `tax_number`، عند الإرسال إلى السجل. `valid` /
                      `invalid`: يتم تحديدها بواسطة السجل الرسمي للدولة (EU
                      VIES، والنرويج، وسويسرا، والبرازيل، وكولومبيا، وكوستاريكا،
                      والإكوادور، وباراغواي؛ وبولندا أيضاً عبر سجل ضريبة القيمة
                      المضافة المحلي الخاص بها). `format_valid` /
                      `invalid_format`: يتم تحديدها بناءً على قواعد التنسيق
                      وأرقام التحقق الخاصة بالدولة عند تعذر الاستعلام من أي سجل.
                      `could_not_validate`: كان السجل غير متاح.
                      `not_applicable`: لا يوجد رقم، أو دولة بدون سجل أو قواعد،
                      أو جلسة في البيئة التجريبية.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      الرقم الذي تم التحقق منه، كما يعرفه المصدر (على سبيل
                      المثال، رقم ضريبة القيمة المضافة المشتق من SIREN الفرنسي
                      أو RSIN الهولندي). يكون `null` عند عدم تشغيل أي فحص.
                  vat_validation_source:
                    type: string
                    nullable: true
                    enum:
                      - eu_vies
                      - pl_vat_white_list
                      - no_brreg
                      - ch_uid_register
                      - br_receita_federal
                      - co_rues
                      - cr_hacienda
                      - ec_sri
                      - py_dnit
                      - format_rules
                      - null
                    description: >-
                      المصدر الذي حدد `vat_validation_status`: إما سجل رسمي، أو
                      `format_rules`. تكون قيمته `null` عند عدم تشغيل أي فحص.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      الاسم المسجل لدى المصدر الذي تحقق من صحة الرقم، عند إفصاحه
                      عن اسم. يُعيّن فقط عندما تكون الحالة `valid`.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      العنوان المسجل لدى المصدر الذي تحقق من الرقم، عندما يكشف
                      عنه. يتم تعيينه فقط عندما تكون الحالة `valid`.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: الطابع الزمني للفحص. يكون `null` في حال عدم تشغيل أي فحص.
                  financial_summary:
                    type: object
                    nullable: true
                  officers:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        designation:
                          type: string
                          nullable: true
                        role:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            الاسم الشخصي عندما يذكره سجل الشركات صراحةً؛ لا
                            يُستنتج من الاسم الكامل.
                        last_name:
                          type: string
                          nullable: true
                          description: اسم العائلة عندما يُبلّغ عنه السجل صراحةً.
                        address:
                          type: string
                          nullable: true
                          description: عنوان المسؤول الوارد من السجل.
                        appointment_date:
                          type: string
                          nullable: true
                          description: تاريخ تعيين المسؤول.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: تاريخ انتهاء التعيين، عند الإبلاغ عنه.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            تاريخ الميلاد الكامل المبلغ عنه في السجل. يكون
                            فارغاً (Null) عندما تكون سنة أو شهر الميلاد فقط
                            معروفان.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            سنة الميلاد كما وردت في السجل، بما في ذلك الحالات
                            التي لا يتوفر فيها التاريخ بالكامل.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            شهر الميلاد كما ورد في السجل. يكون Null عندما تكون
                            السنة فقط هي المعروفة.
                  beneficial_owners:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        roles:
                          type: array
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            الحد الأدنى لنسبة الملكية كما أبلغ عنها السجل. سلسلة
                            نصية حرة (مثل `"25.00"`، `"50"`)؛ استخدم
                            `effective_ownership_percent` للحصول على قيمة رقمية
                            محللة.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            الحد الأعلى لنسبة الملكية كما وردت في سجل الشركات.
                            سلسلة نصية حرة؛ استخدم `effective_ownership_percent`
                            للحصول على قيمة عددية معالجة.
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        effective_ownership_percent:
                          type: number
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: تاريخ الميلاد الكامل عند الإبلاغ عنه.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: تاريخ التعيين عند الإبلاغ عنه.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: >-
                      كل عنوان ينص عليه السجل، بصيغة معيارية واحدة. يكون Null
                      عندما لا ينص على أي عنوان.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: >-
                      الأنشطة التي يصنف السجل الشركة تحتها، بصيغة قياسية موحدة.
                      تكون null عند عدم ذكر أي نشاط.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      تواريخ إيداعات السجل، عند توفرها. تستخدم الإقرارات السنوية
                      والاجتماعات العامة last_annual_return_date وlast_agm_date؛
                      وهي تختلف عن الحسابات المالية.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: البيانات المؤكدة أو المعدلة من قبل المستخدم النهائي.
                  confirmed_by_user_at:
                    type: string
                    format: date-time
                    nullable: true
                  last_console_edit_at:
                    type: string
                    format: date-time
                    nullable: true
                  is_editable:
                    type: boolean
                  ownership:
                    $ref: '#/components/schemas/KYBRegistryOwnership'
                  registry_tier:
                    type: string
                    nullable: true
                    description: >-
                      مستوى سجل الشركات الذي طلبه سير العمل: `basic`، أو
                      `shareholders`، أو `ubo`. موجود أيضاً في
                      `ownership.tier_requested`.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      المستوى الذي سلّمه السجل ويُفوتر. يوجد أيضاً في
                      `ownership.tier_delivered`.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`، أو `pending`، أو `delivered`، أو
                      `not_held`، أو `unavailable`. وأيضاً في
                      `ownership.status`.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: >-
                      أحدث مراقبة لسجل الشركات للشركة، أو `null` في حال عدم وجود
                      أي منها.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      status:
                        type: string
                      unavailable_reason:
                        type: string
                        nullable: true
                      enrolled_at:
                        type: string
                        format: date-time
                        nullable: true
                      cancelled_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_bill_date:
                        type: string
                        format: date
                        nullable: true
                      next_bill_date:
                        type: string
                        format: date
                        nullable: true
                      last_event_at:
                        type: string
                        format: date-time
                        nullable: true
                      events_count:
                        type: integer
                      watched_fields:
                        description: حقول الشركة التي تراقبها أداة المراقبة.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            فحوصات مجمعة للأشخاص الرئيسيين. تظهر فقط عندما يكون `session_kind =
            business`. يستخدم كل عنصر بنية من قسمين (`registry`، `submitted`،
            `ubo_kyc_summary`).
          items:
            type: object
            description: >-
              فحص مجمع لمسؤولي الشركة + المستفيدين الحقيقيين (UBOs). يستخدم بنية
              `registry` / `submitted`. لا يظهر إلا عندما يكون session_kind =
              business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: الأطراف المكتشفة عبر فحص سجل الشركات.
                properties:
                  officers:
                    type: array
                    description: >-
                      المسؤولون الذين تم اكتشافهم عبر فحص السجل، مع إثراء كل
                      منهم بحالة أي جلسة KYC تابعة وفحص AML تم إنشاؤهما لهم.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: الاسم الكامل للمسؤول كما هو مسجل في السجل.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            المسمى بنص حر من السجل (مثل `Director` أو `Company
                            Secretary`).
                        role:
                          type: string
                          enum:
                            - director
                            - non_executive_director
                            - secretary
                            - chairman
                            - ubo
                            - shareholder
                            - representative
                            - founder
                            - legal_advisor
                            - authorized_signatory
                            - trustee
                            - beneficiary
                            - settlor
                            - protector
                            - company_officer
                            - investor
                            - other
                          description: الدور المعياري للمسؤول.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: تاريخ تعيين المسؤول.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: تاريخ انتهاء التعيين، عند الإبلاغ عنه.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: عنوان المسؤول الوارد من السجل.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            حالة فحص AML الذي تم إجراؤه لهذا المسؤول. تكون
                            `null` في حال لم يتم إجراء أي فحص AML.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            حالة دورة الحياة الخام لجلسة KYC التابعة التي تم
                            إنشاؤها لهذا المسؤول. هذا هو تعداد حالة الجلسة
                            الكامل (وليس مجموعة مختصرة من مقبولة/مرفوضة/قيد
                            الانتظار). تكون القيمة `null` في حال عدم وجود جلسة
                            KYC تابعة.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            رابط URL قابل للمشاركة لجلسة KYC الفرعية. يكون
                            `null` عندما لا توجد جلسة فرعية.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف الجلسة لجلسة KYC الفرعية. مرّره إلى endpoint
                            القرار نفسها لجلب تقرير KYC الكامل للشخص. يكون
                            `null` في حال عدم وجود جلسة فرعية.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            نوع سير العمل الأساسي لسير عمل الجلسة الفرعية (مثل
                            `kyc`). تكون القيمة `null` لمهام سير العمل المستندة
                            إلى المخطط أو في حال عدم وجود جلسة فرعية.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف سير العمل المستخدم بواسطة الجلسة الفرعية. يكون
                            `null` عند عدم وجود جلسة فرعية.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            تسمية سهلة القراءة لسير عمل الجلسة الفرعية. تكون
                            `null` إذا لم تكن محددة.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            التقدم لكل ميزة في جلسة التحقق الفرعية، مثل
                            `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. تكون القيمة `null` عندما لا تحتوي
                            الجلسة الفرعية على قائمة ميزات قابلة للحل.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  الاسم المعروض للميزة (مثل `ID_VERIFICATION`،
                                  أو `LIVENESS`، أو `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: حالة مستوى الميزة داخل الجلسة الفرعية.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            معرّف داخلي ثابت للفرد المتحقق منه خلف الجلسة
                            الفرعية — مفيد للربط عبر الجلسات. تكون القيمة `null`
                            عند عدم وجود جلسة فرعية أو إذا لم يتم تحديد المستخدم
                            بعد.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            نوع المستند المقدّم في جلسة KYC الفرعية (مثل `P` أو
                            `ID` أو `DL`). يكون `null` حتى تتوفر نتيجة التحقق من
                            الهوية للجلسة الفرعية.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            الجنسية المستخرجة من المستند في جلسة KYC الفرعية.
                            تكون `null` حتى تصبح متاحة.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            ما إذا كان فحص الحيوية لجلسة KYC الفرعية قد اجتاز
                            بنجاح. وتكون `null` في حال لم يتم تشغيل أي فحص
                            حيوية.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            وقت وصول جلسة KYC التابعة إلى حالة `Approved`. تكون
                            القيمة `null` طالما أن الجلسة التابعة في أي حالة
                            أخرى.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            ملخص لكل فئة مشتق من تطابقات AML للشخص. `null` في
                            حال عدم وجود تطابقات.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            طابع زمني بتنسيق ISO 8601 لآخر إشعار دعوة تحقق تم
                            إرساله للجلسة الفرعية لهذا الشخص. تكون القيمة `null`
                            عند عدم إرسال أي إشعار.
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            الاسم الشخصي عندما يذكره سجل الشركات صراحةً؛ لا
                            يُستنتج من الاسم الكامل.
                        last_name:
                          type: string
                          nullable: true
                          description: اسم العائلة عندما يُبلّغ عنه السجل صراحةً.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            تاريخ الميلاد الكامل المبلغ عنه في السجل. يكون
                            فارغاً (Null) عندما تكون سنة أو شهر الميلاد فقط
                            معروفان.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            سنة الميلاد كما وردت في السجل، بما في ذلك الحالات
                            التي لا يتوفر فيها التاريخ بالكامل.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            شهر الميلاد كما ورد في السجل. يكون Null عندما تكون
                            السنة فقط هي المعروفة.
                  beneficial_owners:
                    type: array
                    description: >-
                      المستفيدون الحقيقيون الذين تم اكتشافهم عبر فحص سجل
                      الشركات، مع تزويد كل منهم بحالة أي جلسة KYC فرعية وفحص AML
                      تم إنشاؤهما لهم.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            الاسم الكامل للمستفيد الحقيقي (أو اسم الشركة بالنسبة
                            لكيانات UBO الاعتبارية).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: تاريخ الميلاد الكامل عند الإبلاغ عنه.
                          format: date
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        roles:
                          type: array
                          description: >-
                            أسماء الأدوار التي يشغلها هذا المالك، على سبيل
                            المثال `["ubo", "shareholder"]`.
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            الحد الأدنى لنسبة الملكية كما أبلغ عنها السجل. سلسلة
                            نصية حرة (مثل `"25"`، `"25-50%"`)؛ استخدم
                            `effective_ownership_percent` للحصول على قيمة رقمية
                            محللة.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            الحد الأعلى لنسبة الملكية كما وردت في سجل الشركات.
                            سلسلة نصية حرة؛ استخدم `effective_ownership_percent`
                            للحصول على قيمة عددية معالجة.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            حالة فحص AML الذي تم إجراؤه لهذا المستفيد الحقيقي.
                            تكون `null` في حال لم يتم إجراء أي فحص AML.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            حالة دورة الحياة الخام لجلسة KYC التابعة التي تم
                            إنشاؤها لهذا المستفيد الحقيقي. هذا هو تعداد حالة
                            الجلسة الكامل (وليس مجموعة مختصرة من
                            مقبولة/مرفوضة/قيد الانتظار). تكون القيمة `null` في
                            حال عدم وجود جلسة KYC تابعة.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            رابط URL قابل للمشاركة لجلسة KYC الفرعية. يكون
                            `null` عندما لا توجد جلسة فرعية.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف الجلسة لجلسة KYC الفرعية. مرّره إلى endpoint
                            القرار نفسها لجلب تقرير KYC الكامل للشخص. يكون
                            `null` في حال عدم وجود جلسة فرعية.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            نوع سير العمل الأساسي لسير عمل الجلسة الفرعية (مثل
                            `kyc`). تكون القيمة `null` لمهام سير العمل المستندة
                            إلى المخطط أو في حال عدم وجود جلسة فرعية.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف سير العمل المستخدم بواسطة الجلسة الفرعية. يكون
                            `null` عند عدم وجود جلسة فرعية.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            تسمية سهلة القراءة لسير عمل الجلسة الفرعية. تكون
                            `null` إذا لم تكن محددة.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            التقدم لكل ميزة في جلسة التحقق الفرعية، مثل
                            `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. تكون القيمة `null` عندما لا تحتوي
                            الجلسة الفرعية على قائمة ميزات قابلة للحل.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  الاسم المعروض للميزة (مثل `ID_VERIFICATION`،
                                  أو `LIVENESS`، أو `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: حالة مستوى الميزة داخل الجلسة الفرعية.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            معرّف داخلي ثابت للفرد المتحقق منه خلف الجلسة
                            الفرعية — مفيد للربط عبر الجلسات. تكون القيمة `null`
                            عند عدم وجود جلسة فرعية أو إذا لم يتم تحديد المستخدم
                            بعد.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            نوع المستند المقدّم في جلسة KYC الفرعية (مثل `P` أو
                            `ID` أو `DL`). يكون `null` حتى تتوفر نتيجة التحقق من
                            الهوية للجلسة الفرعية.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            الجنسية المستخرجة من المستند في جلسة KYC الفرعية.
                            تكون `null` حتى تصبح متاحة.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            ما إذا كان فحص الحيوية لجلسة KYC الفرعية قد اجتاز
                            بنجاح. وتكون `null` في حال لم يتم تشغيل أي فحص
                            حيوية.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            وقت وصول جلسة KYC التابعة إلى حالة `Approved`. تكون
                            القيمة `null` طالما أن الجلسة التابعة في أي حالة
                            أخرى.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            ملخص لكل فئة مشتق من تطابقات AML للشخص. `null` في
                            حال عدم وجود تطابقات.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            طابع زمني بتنسيق ISO 8601 لآخر إشعار دعوة تحقق تم
                            إرساله للجلسة الفرعية لهذا الشخص. تكون القيمة `null`
                            عند عدم إرسال أي إشعار.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            بالنسبة للـ UBOs للشركات: المستفيدون الحقيقيون
                            الخاصون بالكيان المالك، ككائنات خام مستخرجة من
                            السجل. مصفوفة فارغة عندما لا ينطبق ذلك.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            نسبة الملكية الرقمية المحللة — الحد الأقصى عند
                            توفره، وإلا فالحد الأدنى. القيمة `null` عندما يتعذر
                            تحليل كلا الحدين.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: تاريخ التعيين عند الإبلاغ عنه.
                          format: date
              submitted:
                type: object
                description: >-
                  الأطراف المُرسلة من قِبل مسؤول الشركة أثناء سير عمل الأشخاص
                  الرئيسيين (صفوف BusinessParty حيث source=USER).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: >-
                        طرف مُرسل من قِبل مسؤول الشركة عبر سير عمل الأشخاص
                        الرئيسيين (source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            دائماً `USER` هنا — لا تحتوي هذه الفئة إلا على
                            الأطراف التي أدخلها أو أكّدها المستخدم النهائي في
                            مسار الأشخاص الرئيسيون (يظهر الأشخاص المكتشفون عبر
                            السجل ضمن `registry`).
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        email:
                          type: string
                          format: email
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                          description: الجنسية للأفراد؛ ودولة التأسيس لأطراف الشركات.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: المسمى الوظيفي / المنصب بنص حر (للأشخاص فقط).
                        custom_fields:
                          type: object
                          description: >-
                            حقول مخصصة محددة في سير العمل تم جمعها لهذا الطرف؛
                            يتم تحديد المفاتيح بواسطة الواصفات المحددة لحقول
                            الأشخاص الرئيسيين في سير العمل.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            تكون القيمة True عندما يتخطى المستخدم النهائي عملية
                            التحقق لهذا الطرف (ممكن فقط عندما يسمح الدور
                            بالتخطي).
                        requires_verification:
                          type: boolean
                          description: >-
                            تكون القيمة True عندما تكون هناك حاجة إلى جلسة فرعية
                            تابعة لـ KYC / KYB لهذا الطرف بناءً على إعدادات
                            الدور وحدود الملكية.
                        roles:
                          type: array
                          description: >-
                            جميع الأدوار التي يشغلها هذا الطرف، ولكل منها نسب
                            الملكية والتصويت الخاصة به. لا يوجد `role` أو
                            `ownership_percent` مفرد على الطرف نفسه.
                          items:
                            type: object
                            properties:
                              role:
                                type: string
                                enum:
                                  - director
                                  - non_executive_director
                                  - secretary
                                  - chairman
                                  - ubo
                                  - shareholder
                                  - representative
                                  - founder
                                  - legal_advisor
                                  - authorized_signatory
                                  - trustee
                                  - beneficiary
                                  - settlor
                                  - protector
                                  - company_officer
                                  - investor
                                  - other
                              ownership_percent:
                                type: number
                                nullable: true
                              voting_percent:
                                type: number
                                nullable: true
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف جلسة KYC الفرعية لأطراف الأفراد التي تتطلب
                            التحقق. `null` بخلاف ذلك.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            حالة دورة حياة جلسة KYC الفرعية التابعة. تكون `null`
                            في حال عدم وجود جلسة KYC فرعية.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف الجلسة الفرعية لـ KYB التابعة لأطراف الشركات
                            التي تتطلب التحقق. `null` بخلاف ذلك.
                        kyb_sub_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            حالة دورة حياة جلسة KYB الفرعية التابعة. تكون `null`
                            في حال عدم وجود جلسة فرعية.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            رابط URL قابل للمشاركة للجلسة الفرعية التابعة لـ
                            KYB. يكون `null` عندما لا توجد جلسة فرعية.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            نوع سير العمل الأساسي لسير عمل الجلسة الفرعية (تُفضل
                            جلسة KYC، مع الرجوع إلى جلسة KYB الفرعية). تكون
                            القيمة `null` لمهام سير العمل المستندة إلى المخطط أو
                            عند عدم وجود جلسة فرعية.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            معرّف سير العمل المستخدم بواسطة الجلسة الفرعية. يكون
                            `null` عند عدم وجود جلسة فرعية.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            تسمية سهلة القراءة لسير عمل الجلسة الفرعية. تكون
                            `null` إذا لم تكن محددة.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            التقدم لكل ميزة في جلسة التحقق الفرعية، مثل
                            `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. تكون القيمة `null` عندما لا تحتوي
                            الجلسة الفرعية على قائمة ميزات قابلة للحل.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  الاسم المعروض للميزة (مثل `ID_VERIFICATION`،
                                  أو `LIVENESS`، أو `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: حالة مستوى الميزة داخل الجلسة الفرعية.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            معرّف داخلي ثابت للفرد المتحقق منه خلف الجلسة
                            الفرعية. تكون القيمة `null` عندما لا يتم تحديده.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: >-
                  تقدم KYC المجمع للمستفيدين الحقيقيين (UBOs)، أو null عندما لا
                  يمتلك أي مستفيد حقيقي جلسات KYC مرتبطة.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: >-
                      المستفيدون الحقيقيون (UBOs) الذين جاءت نتيجة KYC الخاصة
                      بهم مرفوضة أو قيد المراجعة.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            عمليات التحقق من المستندات مجمّعة حسب عقدة سير العمل. تظهر فقط عندما
            يكون `session_kind = business`.
          items:
            type: object
            description: >-
              المستندات مجمّعة حسب عقدة سير العمل. تظهر فقط عندما يكون
              session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    document_type:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        مجموعة مستندات KYB عالية المستوى التي تم تصنيف الملف
                        ضمنها. `null` طالما لم يتم تصنيفه.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        النوع الفرعي المحدد المكتشف بواسطة OCR (مثل
                        `CERTIFICATE_OF_INCORPORATION` أو
                        `SHAREHOLDER_REGISTRY`)؛ وتكون `UNKNOWN` عندما يتعذر على
                        OCR تصنيف المستند بثقة.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        اسم بديل لـ `document_type` — اسم المجموعة المستخدم
                        بواسطة `groups` و`required_groups`.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        رابط موقع مسبقاً قصير الأجل للملف المرفوع. يكون `null`
                        للعناصر النائبة لطلبات المستندات التي أنشأها المحلل
                        (`is_requested = true`) والتي لم يتم استيفاؤها بعد.
                    original_filename:
                      type: string
                      nullable: true
                      description: اسم الملف كما رفعه المستخدم أو المحلل.
                    file_size:
                      type: integer
                      nullable: true
                      description: حجم الملف بالبايت.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: حالة التحقق لكل مستند.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        المطابقة المرجعية لحقول المستند المستخرجة عبر OCR مع
                        الملف التعريفي للشركة في السجل. كائن يحتوي على أقسام
                        `critical` و`non_critical` و`people`، حيث يربط كل منها
                        اسم حقل (مثل `company_name` و`registration_number`
                        و`incorporation_date` و`registered_address`) بسجل مقارنة
                        مثل `{"document": "...", "registry": "...", "match":
                        true, "score": 0.97}`. وتكون القيمة `null` عندما لا
                        يحتوي المستند على بيانات OCR أو لم تكن هناك شركة في
                        السجل للمقارنة معها.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        البيانات الوصفية المستخرجة من مستند الشركة المرفوع. عند
                        نجاح استخراج البيانات الوصفية، تكون جميع المفاتيح الـ 16
                        موجودة دائمًا (تكون القيم الفردية `null` عندما لا تنطبق
                        على نوع الملف)؛ ويكون الكائن بالكامل `null` عندما يتعذر
                        استخراج أي شيء. بالنسبة لملفات PDF، يحمل
                        `overlay_manipulation` تحليلًا جنائيًا للنص المتراكب.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: حجم المستند.
                        content_type:
                          type: string
                          nullable: true
                          description: نوع محتوى المستند.
                        creation_date:
                          type: string
                          nullable: true
                          description: تاريخ إنشاء المستند.
                        modified_date:
                          type: string
                          nullable: true
                          description: تاريخ تعديل المستند.
                        creator:
                          type: string
                          nullable: true
                          description: >-
                            أداة التأليف/المستخدم المسجل في البيانات الوصفية
                            للملف (`Creator` في ملف PDF).
                        producer:
                          type: string
                          nullable: true
                          description: البرنامج الذي أنتج الملف (`Producer` الخاص بـ PDF).
                        software:
                          type: string
                          nullable: true
                          description: برنامج التحرير المسجل في البيانات الوصفية للملف.
                        encryption:
                          type: string
                          nullable: true
                          description: مخطط تشفير الملف، عندما يكون مشفراً.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: ما إذا كان المستند يحمل توقيعاً رقمياً.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: >-
                            ما إذا كان التوقيع الرقمي قد فشل في التحقق من صحته
                            (تعديل بعد التوقيع).
                        signature_info:
                          type: object
                          nullable: true
                          description: تفاصيل التوقيع/التوقيعات الرقمية، إن وُجدت.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: تاريخ الالتقاط الأصلي في EXIF، لعمليات تحميل الصور.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: تاريخ الرقمنة في EXIF، لعمليات تحميل الصور.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: >-
                            ما إذا كانت البيانات الوصفية تشير إلى أن الملف قد مر
                            عبر محرر صور/PDF معروف.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: >-
                            ما إذا كانت تواريخ الإنشاء والتعديل تختلف — وهي
                            إشارة تعديل محتملة (لكنها ليست حاسمة).
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            التحليل الجنائي لملفات PDF للتلاعب المشتبه به في
                            النص المتراكب. القيمة Null عند عدم العثور على أي
                            دليل تلاعب بالنص المتراكب أو إذا لم يكن المستند
                            بصيغة PDF.
                          properties:
                            detected:
                              type: boolean
                              description: >-
                                ما إذا تم اكتشاف دليل على التلاعب بالنص
                                المتراكب.
                            analyzed:
                              type: boolean
                              description: ما إذا كان قد أمكن تحليل ملف PDF.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                يكون الحقل موجودًا وقيمته صحيحة فقط عندما يتعذر
                                فحص الملف بالكامل. يحتفظ الجزء الذي تم فحصه
                                بنتائجه حيثما أمكن، ويُظهر المستند تحذير استبدال
                                النص غير المُثبت.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                إشارات الفحص الجنائي التي تم إطلاقها، مثل
                                duplicate_font_subset أو glyph_fragmentation.
                            manipulated_regions:
                              type: array
                              description: >-
                                المناطق المشتبه في التلاعب بها بإحداثيات صفحة
                                PDF.
                              items:
                                type: object
                                properties:
                                  page:
                                    type: integer
                                  x:
                                    type: number
                                  'y':
                                    type: number
                                  width:
                                    type: number
                                  height:
                                    type: number
                                  page_width:
                                    type: number
                                  page_height:
                                    type: number
                    description:
                      type: string
                      nullable: true
                      description: >-
                        تصنيف أو سبب مقدّم من المحلل لطلب المستند. `null`
                        لعمليات الرفع العادية.
                    is_requested:
                      type: boolean
                      description: >-
                        تكون القيمة True لعناصر نائبة لطلبات المستندات التي
                        أنشأها المحلل وتنتظر الرفع.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        تكون القيمة True للمستندات المرفوعة من لوحة التحكم بدلاً
                        من مسار المستخدم النهائي. لا تؤدي عمليات الرفع من لوحة
                        التحكم أبداً إلى تغيير الحالة التراكمية على مستوى
                        الميزة.
                    is_confirmed:
                      type: boolean
                      description: >-
                        تبدأ عمليات الرفع في Console بالقيمة `false` وتتحول إلى
                        `true` بمجرد تأكيدها من قبل المسؤول؛ وتكون عمليات الرفع
                        من المستخدم النهائي دائماً `true`.
              groups:
                type: object
                description: >-
                  عدادات التقدم لكل مجموعة مفهرسة باسم المجموعة (مثل
                  legal_presence، ownership_structure).
                additionalProperties:
                  type: object
                  properties:
                    total:
                      type: integer
                    approved:
                      type: integer
                    pending:
                      type: integer
                    declined:
                      type: integer
                    in_review:
                      type: integer
                    other:
                      type: integer
                    missing:
                      type: integer
                      description: >-
                        العناصر النائبة المطلوبة التي لم يتم تحميل أي ملف لها
                        بعد.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            ما إذا كانت الجلسة قد أُنشئت بواسطة تطبيق إنتاج (`live`) أو تطبيق في
            البيئة التجريبية (`sandbox`). جلسات البيئة التجريبية مجانية ومحاكاة
            بالكامل ولا تخصم أرصدة أبداً.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            سيناريو البيئة التجريبية الذي تم إنشاء الجلسة باستخدامه. `null`
            للجلسات المباشرة ولجلسات البيئة التجريبية التي تم إنشاؤها بدونه.
        resubmissions:
          type: array
          description: >-
            يتم إرجاعها فقط مع `include=resubmissions`، لجلسات المستخدمين
            والشركات. مدخل واحد لكل طلب إعادة تقديم، من الأقدم إلى الأحدث. يحمل
            كل مدخل النتائج التي أرجعتها الخطوات المعاد تقديمها قبل الطلب، بحيث
            تظل عمليات الإرسال السابقة قابلة للقراءة. يؤدي حذف الجلسة إلى حذف كل
            عملية إرسال.
          items:
            type: object
            properties:
              number:
                type: integer
                description: 1 لأول إعادة إرسال للجلسة، و2 للثانية، وهكذا.
              created_at:
                type: string
                format: date-time
                description: متى طُلبت إعادة التقديم.
              previous_status:
                type: string
                description: حالة الجلسة مباشرة قبل الطلب.
              nodes:
                type: array
                description: خطوات سير العمل المُعادة إلى المستخدم.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: السبب المقدم لكل خطوة، مفهرساً بواسطة `node_id`.
              requested_by:
                type: object
                nullable: true
                description: من طلب إعادة التقديم.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  ما أرجعته الخطوات المُعاد إرسالها قبل الطلب، تحت نفس المفاتيح
                  وبنفس هيئة النتائج الحالية لهذه الاستجابة (`id_verifications`،
                  و`nfc_verifications`، و`liveness_checks`، و`face_matches`،
                  و`poa_verifications`، و`phone_verifications`،
                  و`email_verifications`، و`aml_screenings`، و`ip_analyses`،
                  و`database_validations`، و`questionnaire_responses`،
                  و`document_ai_documents`، و`geolocation_checks`؛ ولجلسات
                  الشركات أيضاً `document_verifications`). تظهر فقط مفاتيح
                  الخطوات التي تم إرسالها مجدداً.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            ما إذا كانت الجلسة تتطلب موافقة بيومترية صريحة قبل التقاط الوجه،
            والسبب، والدليل على الإجابة. جلسات التحقق من المستخدمين (KYC) فقط؛
            يتوفر الكائن نفسه في `decision` لـ webhook الخاصة بالجلسة. يكون
            `null` عندما لا تخضع الجلسة للتقييم على الإطلاق، على سبيل المثال في
            سير عمل بدون التقاط للوجه. الحقول التي ليس لها قيمة مسجلة تكون
            `null`. لا يمكن لـ SDK أصيل بإصدار أقدم من 4.10.0، أو الذي لا يُبلّغ
            عن إصداره، إظهار خطوة الموافقة: وتعمل عمليات التقاط الوجه كما كانت
            من قبل، وتبلغ الجلسة التي تطلبت الموافقة حينها عن `status:
            "pending"` مع `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. راجع
            [الموافقة البيومترية](/ar/getting-started/biometric-consent).
          properties:
            required:
              type: boolean
              description: >-
                Whether the session must collect explicit biometric consent.
                Never goes back to `false`.
            trigger:
              type: string
              nullable: true
              enum:
                - declared_state
                - ip_state
                - ip_unknown
                - document_issuer
                - forced
                - customer_collected
              description: >-
                سبب طلب الموافقة، أو كيف تم استيفاؤها. `declared_state`: صرّحت
                بولاية مشمولة (`user_state`، أو عنوان أمريكي في
                `expected_details`). `ip_state`: عنوان IP الخاص بالشخص يقع في
                ولاية مشمولة (إلينوي، تكساس، كولورادو). `ip_unknown`: تشير
                الأدلة إلى وجود الشخص في الولايات المتحدة ولكن يتعذر تحديد
                الولاية (عنوان IP في الولايات المتحدة دون تحديد الولاية، أو
                يتعذر تحديد موقعه بينما تشير تفاصيلك أو المستند إلى وجود الشخص
                في الولايات المتحدة). `document_issuer`: تم إصدار مستند الهوية
                من قِبل ولاية مشمولة. `forced`: وضع التطبيق هو Always.
                `customer_collected`: أرسلت `biometric_consent` عند إنشاء
                الجلسة. تكون `null` عندما لا تكون مطلوبة.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`؛ و`pending` (مطلوبة ولم تُقدَّم: لم يُجب الشخص
                بعد، أو يوضح `reason` سبب عدم جمعها)؛ و`given`؛ و`declined` (تم
                تسجيل رفض وانتهت الجلسة كـ `Declined`؛ لا توفر أي شاشة في Didit
                خيار الرفض حالياً).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                وقت تقديم الموافقة. بالنسبة إلى `customer_collected`، قيمة
                `given_at` التي أرسلتها.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: عند تسجيل الرفض.
            text_version:
              type: string
              nullable: true
              description: >-
                معرّف إصدار نص الموافقة الذي أجاب عليه الشخص، أو النص الذي
                أرسلته.
            text_hash:
              type: string
              nullable: true
              description: >-
                تشفير SHA-256 (hex) لنص الموافقة المعروض بدقة، باللغة التي عُرض
                بها.
            locale:
              type: string
              nullable: true
              description: اللغة التي عُرض بها نص الموافقة.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: سياسة البيانات البيومترية التي ربطت بها خطوة الموافقة.
            step:
              type: string
              nullable: true
              description: >-
                خطوة سير العمل التي كانت الجلسة عندها عندما أجاب الشخص، على سبيل
                المثال `LIVENESS`.
            node_id:
              type: string
              nullable: true
              description: عقدة مخطط سير العمل التي كانت الجلسة عندها عندما أجاب الشخص.
            ip_address:
              type: string
              nullable: true
              description: عنوان IP الذي وردت منه الإجابة.
            ip_country_code:
              type: string
              nullable: true
              description: دولة عنوان IP للإجابة وفق المعيار ISO 3166-1 alpha-2.
            ip_state:
              type: string
              nullable: true
              description: >-
                التقسيم الإداري حسب معيار ISO 3166-2 لعنوان IP الخاص بالإجابة،
                على سبيل المثال `US-IL`.
            ip_city:
              type: string
              nullable: true
              description: مدينة عنوان IP الخاص بالإجابة.
            user_agent:
              type: string
              nullable: true
              description: وكيل المستخدم لطلب الإجابة.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                عنوان IP الخاص بالشخص الذي جرى تقييم المتطلب منه آخر مرة. قد
                يختلف عن `ip_address` إذا أجاب الشخص من جهاز آخر.
            detected_country_code:
              type: string
              nullable: true
              description: دولة عنوان IP المكتشف وفق المعيار ISO 3166-1 alpha-2.
            detected_state:
              type: string
              nullable: true
              description: التقسيم الإداري حسب معيار ISO 3166-2 لعنوان IP المكتشف.
            detected_city:
              type: string
              nullable: true
              description: مدينة عنوان IP المكتشف.
            declared_state:
              type: string
              nullable: true
              description: >-
                التقسيم الإداري حسب معيار ISO 3166-2 الذي صرحت به: `user_state`،
                أو الولاية لعنوان في الولايات المتحدة في `expected_details`.
            document_state:
              type: string
              nullable: true
              description: >-
                التقسيم الإداري حسب معيار ISO 3166-2 الذي أصدر مستند الهوية،
                وتتم قراءته عند التقاط الهوية.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                الولايات الأمريكية (رموز USPS، على سبيل المثال `IL`) التي ينطبق
                قانونها البيومتري على الشخص. تكون القيمة `US` عندما تشير الأدلة
                إلى وجود الشخص في الولايات المتحدة دون معرفة ولاية محددة. يكون
                فارغاً عند عدم انطباق أي منها.
            retention_months:
              type: integer
              nullable: true
              description: >-
                أقصر حد للاحتفاظ بالبيانات البيومترية، بالأشهر، من بين
                `jurisdictions`. تكون قيمته `null` في حال عدم تطبيق أي منها.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: كانت الموافقة مطلوبة والتقط
                SDK أصلي بإصدار أقدم من 4.10.0، أو SDK لم يُبلغ عن إصداره، وجهاً
                دون خطوة الموافقة؛ تظل `status` كـ `pending`، أو تصبح `given`
                إذا وافق الشخص لاحقاً في المسار المستضاف.
                `BIOMETRIC_CONSENT_DECLINED`: تم تسجيل رفض (يحل محل سبب SDK).
                و`null` خلاف ذلك، وتكون دائماً `null` عندما لا تتطلب الجلسة
                موافقة.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_DECLINED` عندما يؤدي رفض مسجل إلى إنهاء
                الجلسة، وخلاف ذلك `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                وقت حذف صور وجه الجلسة ومقاطع الفيديو وقوالب الوجه الخاصة بها
                بسبب الرفض. تكون القيمة `null` ما لم يتم تسجيل رفض.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: نتيجة استدعاء Fraud Check API. تكون `null` لجميع الجلسات الأخرى.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: >-
            رابط URL قابل لانتهاء الصلاحية لتسجيل الجلسة الكاملة. يُعاد فقط
            عندما تقوم مؤسستك بتسجيل فيديو الجلسة الكاملة.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            وقت إجراء تسجيل الجلسة الكاملة. يُعاد فقط عندما تقوم مؤسستك بتسجيل
            فيديو الجلسة الكاملة.
    AddressValidationResult:
      type: object
      description: >-
        نتيجة عملية تحقق واحدة من العنوان: ما إذا كان العنوان موجوداً، وشكله
        المعياري. يؤكد العنوان فقط؛ ولا يربط العنوان بشخص على الإطلاق.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: تم تأكيد العنوان وصولاً إلى المبنى (أو الشقة أو صندوق
            البريد). `partially_verified`: تم تأكيده فقط حتى مستوى الشارع، أو
            إلى المستوى الأكثر دقة الذي تحتفظ به البيانات المرجعية البريدية لذلك
            المكان. `not_verified`: تطابقت المنطقة أو المدينة فقط، أو لم يتطابق
            أي شيء. `unavailable`: تعذر تشغيل التحقق (على سبيل المثال لم تستجب
            الخدمة المرجعية)؛ لا يتم احتساب أي رسوم عليه ولا يؤثر أبداً على
            عملية التحقق.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            المستوى الأكثر دقة الذي طابقه العنوان. يكون `null` عندما لا يتطابق
            أي شيء أو عندما تكون `status` هي `unavailable`.
        address:
          type: object
          nullable: true
          description: العنوان الموحّد. يكون `null` عندما تكون `status` هي `unavailable`.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: سطر التسليم الأول، مكتوباً بالطريقة التي تكتبها الدولة.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: سطر التسليم الثاني (شقة أو مبنى أو حي)، عندما يتضمن العنوان ذلك.
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: الولاية أو المقاطعة أو المنطقة.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: رمز الدولة وفقاً لـ ISO 3166-1 alpha-2.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: العنوان الموحّد في سطر واحد.
          example: 1600 Amphitheatre Pkwy, Mountain View CA 94043-1351
        latitude:
          type: number
          nullable: true
          example: 37.422022
        longitude:
          type: number
          nullable: true
          example: -122.08429
    PhoneIntelligence:
      type: object
      description: >-
        كتلة معلومات الهاتف المعيارية. تظهر فقط عند تشغيل الوظيفة الإضافية
        للمعلومات لعملية البحث هذه؛ وعند ظهورها يتم عرضها أيضاً تحت الاسم
        المستعار `enrichment` بنفس القيم.
      properties:
        score:
          type: number
          nullable: true
          description: درجة مخاطر معيارية من 0 إلى 100. تشير القيمة الأعلى إلى مخاطر أكبر.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low` أو `Medium` أو `High`، مشتقة من الدرجة.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            معكوس الدرجة، للوحات التحكم التي تفضل أن تكون القيمة الأعلى هي
            الأفضل.
        network_stability_index:
          type: number
          nullable: true
          description: استقرار شبكة الخط.
        is_disposable:
          type: boolean
          nullable: true
          description: >-
            تكون `true` عندما يبدو الرقم مخصصاً للاستخدام لمرة واحدة أو
            افتراضياً.
        is_ported:
          type: boolean
          nullable: true
          description: تكون `true` عندما يكون الرقم قد غيّر مشغّل شبكة الجوال.
        is_recently_ported:
          type: boolean
          nullable: true
          description: تكون `true` عندما تكون عملية نقل الرقم قد تمت مؤخراً.
        carrier_type:
          type: string
          nullable: true
          description: تصنيف الخط الوارد من البحث (مثل `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  معرّف Didit الثابت للإشارة، على سبيل المثال `IR-5AC67A32`. غير
                  قابل للتفسير: قم بالتجميع والتصفية بناءً عليه، ولا تقم بتحليله
                  برمجياً.
              value:
                nullable: true
                description: >-
                  لعلامة المخاطر (على سبيل المثال `voip`، `leaked`،
                  `disposable`، `spam_trap`)، قيمتها: قيمة منطقية أو مستوى أو
                  تاريخ. Null لرمز سبب تم احتساب درجاته.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  ما إذا كانت الإشارة قد رفعت مستوى المخاطر أو زادت من درجة
                  الثقة.
              message:
                type: string
                description: تفسير سهل القراءة للإشارة، باللغة الإنجليزية.
              impact_level:
                type: string
                nullable: true
                description: >-
                  مدى تأثير الإشارة في تغيير الدرجة، على سبيل المثال `low` أو
                  `medium` أو `high`.
          description: >-
            الإشارات التي تفسر الدرجة، لكل منها رمز Didit ثابت، واتجاه، ورسالة،
            ومستوى تأثير. يمكن أن تظهر رموز جديدة بمرور الوقت، لذا لا ترفض
            الرموز غير المعروفة.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        البصمة الاجتماعية لرقم الهاتف: المنصات الإلكترونية المسجل عليها. تظهر
        فقط عند تعيين `enable_social` واكتمال الفحص. قد يكون كل عدد null عندما
        لا يتم إرجاع أي بيانات له. تعني `profiles_registered: 0` أنه تم فحص
        المنصات ولم يتم العثور على رقم الهاتف في أي منها - وهي إجابة صالحة
        وخاضعة للفوترة وإشارة شائعة للهوية الاصطناعية.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: المنصات التي تم تأكيد تسجيل رقم الهاتف فيها.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: المنصات التي تم تقييمها للتسجيل.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: المنصات التي أرجعت اسماً مرتبطاً.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: المنصات التي أرجعت صورة للملف الشخصي.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: منصات التواصل التي تم اكتشاف وجود المستخدم فيها.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: فئات منصات مميزة مع تواجد تم اكتشافه.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: مؤشر النضج الرقمي المركب، من 0 إلى 10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: مؤشر ثراء الملف التعريفي، من 0 إلى 10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: مزيج المنصات المجانية مقابل المدفوعة، من 0 إلى 10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المجانية.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المدفوعة بالكامل.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المجانية جزئيًا.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            مدى اكتمال الملف التعريفي على WhatsApp. للهاتف فقط؛ وتكون القيمة
            فارغة (null) للبريد الإلكتروني.
          example: Partial
        registered_platforms:
          type: array
          description: المنصات التي تم تأكيد التسجيل فيها.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: المنصات التي تم فحصها وكانت النتيجة سلبية.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: عدد التسجيلات ونسبتها حسب فئة المنصة.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            تفاصيل الملف التعريفي لكل منصة، مفهرسة بحسب المنصة، عندما توفرها
            المنصة.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        كتلة معلومات البريد الإلكتروني المعيارية. تظهر فقط عند تشغيل الوظيفة
        الإضافية للمعلومات لهذا البريد الإلكتروني؛ وعند ظهورها يتم عرضها أيضاً
        بالاسم المستعار `enrichment` بنفس القيم.
      properties:
        score:
          type: number
          nullable: true
          description: درجة مخاطر معيارية من 0 إلى 100. تشير القيمة الأعلى إلى مخاطر أكبر.
        deliverable:
          type: string
          nullable: true
          description: نطاق قابلية التسليم (مثل `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low` أو `Medium` أو `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: مؤشر رقمي لمخاطر الاختراق.
        is_recent_breach:
          type: boolean
          nullable: true
          description: تكون القيمة `true` عندما يظهر العنوان في اختراق أمني حديث.
        is_frequent_breached:
          type: boolean
          nullable: true
          description: >-
            تكون القيمة `true` عندما يظهر العنوان في العديد من الاختراقات
            الأمنية.
        is_disposable:
          type: boolean
          nullable: true
          description: تكون `true` عندما يكون النطاق مزود بريد للاستخدام مرة واحدة.
        is_free_domain:
          type: boolean
          nullable: true
          description: تكون `true` عندما يكون النطاق مزود بريد إلكتروني مجاني.
        is_breached:
          type: boolean
          nullable: true
          description: تكون القيمة `true` عندما يظهر العنوان في اختراقات أمنية معروفة.
        no_of_breaches:
          type: number
          nullable: true
          description: عدد الاختراقات المعروفة التي تحتوي على العنوان.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  معرّف Didit الثابت للإشارة، على سبيل المثال `IR-5AC67A32`. غير
                  قابل للتفسير: قم بالتجميع والتصفية بناءً عليه، ولا تقم بتحليله
                  برمجياً.
              value:
                nullable: true
                description: >-
                  لعلامة المخاطر (على سبيل المثال `voip`، `leaked`،
                  `disposable`، `spam_trap`)، قيمتها: قيمة منطقية أو مستوى أو
                  تاريخ. Null لرمز سبب تم احتساب درجاته.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: >-
                  ما إذا كانت الإشارة قد رفعت مستوى المخاطر أو زادت من درجة
                  الثقة.
              message:
                type: string
                description: تفسير سهل القراءة للإشارة، باللغة الإنجليزية.
              impact_level:
                type: string
                nullable: true
                description: >-
                  مدى تأثير الإشارة في تغيير الدرجة، على سبيل المثال `low` أو
                  `medium` أو `high`.
          description: >-
            الإشارات التي تفسر الدرجة، لكل منها رمز Didit ثابت، واتجاه، ورسالة،
            ومستوى تأثير. يمكن أن تظهر رموز جديدة بمرور الوقت، لذا لا ترفض
            الرموز غير المعروفة.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        البصمة الاجتماعية لعنوان البريد الإلكتروني: المنصات الإلكترونية المسجل
        عليها. تظهر فقط عند تعيين `enable_social` واكتمال الفحص. قد يكون كل عدد
        null عندما لا يتم إرجاع أي بيانات له. تعني `profiles_registered: 0` أنه
        تم فحص المنصات ولم يتم العثور على عنوان البريد الإلكتروني في أي منها -
        وهي إجابة صالحة وخاضعة للفوترة وإشارة شائعة للهوية الاصطناعية.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: المنصات التي تم تأكيد تسجيل عنوان البريد الإلكتروني فيها.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: المنصات التي تم تقييمها للتسجيل.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: المنصات التي أرجعت اسماً مرتبطاً.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: المنصات التي أرجعت صورة للملف الشخصي.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: منصات التواصل التي تم اكتشاف وجود المستخدم فيها.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: فئات منصات مميزة مع تواجد تم اكتشافه.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: مؤشر النضج الرقمي المركب، من 0 إلى 10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: مؤشر ثراء الملف التعريفي، من 0 إلى 10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: مزيج المنصات المجانية مقابل المدفوعة، من 0 إلى 10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المجانية.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المدفوعة بالكامل.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: التسجيلات على المنصات المجانية جزئيًا.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: >-
            مدى اكتمال الملف التعريفي على WhatsApp. للهاتف فقط؛ وتكون القيمة
            فارغة (null) للبريد الإلكتروني.
          example: Partial
        registered_platforms:
          type: array
          description: المنصات التي تم تأكيد التسجيل فيها.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: المنصات التي تم فحصها وكانت النتيجة سلبية.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: عدد التسجيلات ونسبتها حسب فئة المنصة.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            تفاصيل الملف التعريفي لكل منصة، مفهرسة بحسب المنصة، عندما توفرها
            المنصة.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: >-
            الترميز المكتشف، على سبيل المثال `QR_CODE`، أو `CODE_128`، أو
            `EAN_13`، أو `DATA_MATRIX`، أو `PDF_417`.
        page_number:
          type: integer
          minimum: 1
          description: رقم الصفحة (بدءاً من 1).
        position:
          type: array
          nullable: true
          description: >-
            المضلع المكتشف بإحداثيات البكسل للصفحة المعروضة. يكون `null` عند عدم
            توفر موقع موثوق.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: الحافة اليسرى للمربع المحيط بوحدات البكسل في الصفحة المعروضة.
        'y':
          type: integer
          nullable: true
          description: الحافة العلوية لمربع الإحاطة بوحدات البكسل الخاصة بالصفحة المعروضة.
        width:
          type: integer
          nullable: true
          description: عرض المربع المحيط ببكسلات الصفحة المعروضة.
        height:
          type: integer
          nullable: true
          description: ارتفاع المربع المحيط ببكسلات الصفحة المعروضة.
        page_width:
          type: integer
          description: عرض الصفحة المعروضة بالبكسل.
        page_height:
          type: integer
          description: ارتفاع الصفحة المعروضة بالبكسل.
        raw_payload:
          type: string
          description: >-
            payload الخام الخاص بأداة فك الترميز في شكل سلسلة base64 عند توفره؛
            وإلا فسيكون سلسلة فارغة.
        parsed_payload:
          nullable: true
          description: >-
            سلسلة نصية مفكوكة الترميز أو قيمة مهيكلة. `null` عندما تم تحديد موقع
            الرمز ولكن تعذر فك ترميزه.
    BankVerificationResult:
      type: object
      description: >-
        نتيجة خطوة واحدة للتحقق من الحساب البنكي، لكل من التحقق من المستخدمين
        والتحقق من الشركات (KYB). يوضح `method` كيفية التحقق من الحساب، بينما
        يشير `none` إلى أن الشخص تابع دون بنك قبل تقييم أي محاولة. يشير
        `continued_without_bank` إلى أن الشخص تابع دون بنك، أيضاً بعد محاولة تم
        تقييمها. راجع [طرق التحقق من الحساب
        البنكي](/ar/core-technology/bank-verification/verification-methods)
        و[عندما يتعذر على الشخص التحقق من حسابه
        البنكي](/ar/core-technology/bank-verification/fallbacks).
      properties:
        schema_version:
          type: integer
          description: إصدار هيكل النتيجة هذا. `1` حالياً.
        bank_verification_id:
          type: string
          format: uuid
          description: معرّف هذه النتيجة.
        node_id:
          type: string
          description: عقدة سير العمل التي تنتمي إليها هذه النتيجة.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: القرار النهائي للخطوة، بعد إجراءاتها وقواعد حالتها.
        original_status:
          type: string
          nullable: true
          description: >-
            الحكم الأول الذي توصلت إليه الخطوة، قبل أي تغيير لاحق مثل مراجعة
            يدوية.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            كيفية التحقق من الحساب: `open_banking` (تسجيل الدخول البنكي: قام
            الشخص بتسجيل الدخول في بنكه)، أو `account_lookup` (التحقق من الحساب:
            قام الشخص بكتابة تفاصيل الحساب وأكد البنك الاسم)، أو `microdeposits`
            أو `statement` (رفع كشف الحساب). تكون `none` عندما يتابع الشخص بدون
            بنك قبل تقييم أي محاولة، وبالتالي لم يتم التحقق من أي حساب. بعد
            المحاولة الخاضعة للتقييم، تظل الطريقة المستخدمة في تلك المحاولة.
            وتكون `null` حتى يتم تقييم الحساب، وعندما يقلص سير العمل البيانات
            التي يرجعها. تقرأ قواعد سير العمل نفس القيمة كـ `bank.method`.
        provider:
          type: string
          nullable: true
          description: >-
            مفتاح المسار الذي أجرى الاتصال. اقرأ `method`، وليس هذا المفتاح،
            لمعرفة كيفية التحقق من الحساب.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: المسار الخاص بـ Didit، ويتم فوترته على رصيد Didit الخاص
            بك. `byok`: مزود من السوق قمت بربطه باستخدام بيانات الاعتماد الخاصة
            بك.
        route:
          type: object
          nullable: true
          description: المسار الذي تم اختياره قبل الموافقة. لا يتغير بعد ذلك مطلقاً.
          properties:
            provider_key:
              type: string
              nullable: true
              description: مفتاح المسار.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: >-
                ما إذا كان مسار Didit الخاص قد حلّ محلّ مزوّد سوق تعذّر عليه
                الاتصال.
            provider_connection_id:
              type: string
              nullable: true
              description: اتصال السوق المستخدم، لـ `byok`.
            requested_scopes:
              type: array
              items:
                type: string
              description: >-
                البيانات التي طلبها الاتصال، على سبيل المثال `ownership` أو
                `balances`.
        connection:
          type: object
          nullable: true
          description: اتصال المحاولة الأخيرة. تكون القيمة `null` قبل المحاولة الأولى.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: >-
                معرّف البنك. يكون `null` لفحص الحساب، عندما لا يتم اختيار أي
                بنك.
            institution_name:
              type: string
              nullable: true
              description: اسم البنك. يكون `null` لفحص الحساب.
            institution_country:
              type: string
              nullable: true
              description: دولة الحساب، بصيغة ISO 3166-1 alpha-3.
            oauth:
              type: boolean
              nullable: true
              description: >-
                ما إذا كان تسجيل الدخول المصرفي قد تم عبر OAuth أو من تطبيق إلى
                تطبيق. وتكون `null` لفحص الحساب.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: وقت نجاح الاتصال.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: وقت انتهاء موافقة البنك، بالنسبة لتسجيل الدخول عبر البنك.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: وقت آخر إعادة قراءة للبيانات المالية.
            attempts:
              type: integer
              description: >-
                المحاولات التي أجراها الشخص في هذه الخطوة، مجمعةً لكافة الطرق
                معاً.
            reason_code:
              type: string
              nullable: true
              description: >-
                سبب عدم كون الاتصال في حالة `connected` ببساطة، على سبيل المثال
                `USER_CANCELLED` أو `INSTITUTION_DOWN` أو `ACCOUNT_NOT_FOUND` أو
                `REFERENCE_IDENTITY_MISSING` أو `VERIFICATION_COMPLETED`.
        account:
          type: object
          nullable: true
          description: الحساب الخاضع للتقييم. يكون `null` حتى يتم تقييم الحساب.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: رقم الحساب، محجوباً.
            iban_masked:
              type: string
              nullable: true
              description: رقم IBAN، مقنّع.
            sort_code:
              type: string
              nullable: true
              description: رمز الفرز، في المملكة المتحدة.
            routing_number_masked:
              type: string
              nullable: true
              description: رقم التوجيه، محجوب.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: النوع الفرعي للحساب لدى البنك نفسه.
            currency:
              type: string
              nullable: true
              description: عملة الحساب حسب معيار ISO 4217.
            holder_type:
              type: string
              nullable: true
              enum:
                - person
                - business
                - unknown
            holders_count:
              type: integer
              nullable: true
            is_joint:
              type: boolean
              nullable: true
            is_business:
              type: boolean
              nullable: true
        ownership:
          type: object
          nullable: true
          description: >-
            كيفية مقارنة صاحب الحساب بالهوية التي تم التحقق منها. تكون `null`
            حتى يتم تقييم الحساب.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match` هو تطابق قريب. `not_verifiable`: ردّ البنك دون
                وجود صاحب حساب للمقارنة. `unknown`: تعذرت قراءة الإثبات، أو لم
                تكن هناك هوية للمقارنة.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                الخطوة التي تمت مقارنة هوية الحامل معها: `kyc`، أو
                `database_validation`، أو `expected_details`، أو
                `questionnaire`، أو `document_ai`، أو `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: درجة Didit لاسم حامل الحساب.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: درجة اسم صاحب الحساب الخاصة بالبنك، في حال إرجاعها.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: درجة عنوان حامل الحساب، عند تشغيل مطابقة العنوان.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                درجة البريد الإلكتروني لحامل الحساب، عند تشغيل مطابقة البريد
                الإلكتروني.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: درجة هاتف حامل الحساب، عند تشغيل مطابقة الهاتف.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: درجة تاريخ ميلاد حامل الحساب، عندما يشارك البنك تاريخ الميلاد.
            close_match:
              type: boolean
              nullable: true
              description: ما إذا كان الاسم يقع ضمن نطاق التطابق التقريبي.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: >-
                إجابة الشخص عند مطالبته بتأكيد اسم متطابق جزئياً. تكون `null`
                إذا لم يُسأل مطلقاً.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: >-
                أي مقارنة للأسماء أنتجت الدرجة. هذه ليست طريقة التحقق: اقرأ
                `method` من المستوى الأعلى لمعرفة ذلك.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: كل صاحب حساب أدرجه البنك، مع درجاته.
            owner_identity_available:
              type: boolean
              nullable: true
            evidence_freshness:
              type: string
              nullable: true
              enum:
                - live
                - cached
                - refreshed
            evaluated_at:
              type: string
              format: date-time
              nullable: true
              description: وقت احتساب القرار.
        financial_data:
          type: object
          description: البيانات المالية التي قرأتها الخطوة. يقرأها تسجيل الدخول البنكي فقط.
          properties:
            balances:
              type: object
              nullable: true
              description: مع النطاق `balances`.
            transactions:
              type: object
              nullable: true
              description: مع النطاق `transactions`.
            income:
              type: object
              nullable: true
              description: مع النطاق `income`.
            categorization:
              type: object
              nullable: true
              description: تصنيف Didit للمعاملات المقروءة. `null` في حال عدم وجودها.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                البيانات التي طلبتها الخطوة والتي لا تجمعها الطريقة التي تحققت
                من الحساب. تأتي الأرصدة والمعاملات والدخل من تسجيل الدخول
                المصرفي فقط، لذلك يسردها هنا الحساب الذي تم التحقق منه عبر فحص
                الحساب. لا يُعد ذلك فشلًا أبدًا. ويكون فارغًا بخلاف ذلك.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: رسوم منصة السوق المفروضة، لـ `byok`.
            usage_type:
              type: string
              nullable: true
              description: >-
                بند الاستخدام الذي تم قيد الرسوم عليه: `bank_verification`
                لتسجيل الدخول البنكي أو فحص الحساب، و`bank_statement_upload`
                لرفع كشف الحساب دون أي محاولة بنكية مدفوعة قبله،
                و`bank_byok_fee` لرسوم السوق على مزود الخدمة الخاص بك. تكون
                `null` عندما لا يتم احتساب أي رسوم.
        reference_identity:
          type: object
          nullable: true
          description: الهوية التي تمت مقارنة الحامل بها، مع مصدرها.
        signals:
          type: object
          nullable: true
          description: إشارات الحساب المقروءة من سجل المعاملات، عندما تقرأ الخطوة أحدها.
        connection_abandoned:
          type: boolean
          nullable: true
          description: ما إذا كانت الخطوة قد انتهت دون تطابق بعد أن غادر الشخص عند بنكه.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            ما إذا كان تعذر الوصول إلى بنك الشخص أو دولته في هذه الخطوة. وتكون
            أيضاً `true` عندما يتابع الشخص دون بنك لعدم توفر طريقة يمكنها التحقق
            من دولته أو بنكه.
        continued_without_bank:
          type: boolean
          description: >-
            ما إذا كان الشخص قد غادر الخطوة عبر **Continue without your bank**.
            يشير `continuation` حينها إلى السبب. تكون قيمة `method` هي `none`
            عند عدم تقييم أي محاولة قبل أن يتابع. بعد إجراء محاولة خضعت للتقييم،
            مثل عدم تطابق صاحب الحساب، تظل قيمة `method` هي طريقة تلك المحاولة
            وتظل نتيجة المحاولة ورموز أسبابها قائمة. يتم إرجاعها حتى لو قلص سير
            العمل البيانات التي يعيدها.
        continuation:
          type: object
          nullable: true
          description: >-
            كيفية متابعة الشخص بدون بنك. تكون `null` عندما لا يتابع بذلك. عندما
            يقلص سير العمل البيانات التي يرجعها، يظل حقل `reason` يُرجع بينما
            تكون كافة المفاتيح الأخرى `null`.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                السبب، وفقاً لما حدده Didit عندما تابع الشخص: `no_route` (لا
                يوجد تسجيل دخول بنكي أو فحص للحساب يدعم دولته)، أو
                `institution_unsupported` (البنك الذي اختاره لا يمكن استخدامه في
                هذه الخطوة)، أو `attempts_exhausted` (استُنفدت جميع المحاولات
                ولم تكن أي منها قيد التنفيذ)، أو `person_choice` (كانت هناك
                طريقة للتحقق واختار المتابعة، وينطبق ذلك أيضاً عندما يتعذر
                الوصول إلى بنكه حالياً). يتبع `no_route`
                و`institution_unsupported` الإجراء `bank_unsupported_action`،
                ويتبع `attempts_exhausted` الإجراء
                `bank_attempts_exhausted_action`، بينما يتبع `person_choice`
                الإجراء `bank_skipped_action`، ما لم تكن هناك محاولة تم تقييمها
                قد حسمت الخطوة بالفعل.
            country:
              type: string
              nullable: true
              description: >-
                الدولة التي كان الشخص يجري التحقق فيها، وفق ISO 3166-1 alpha-3.
                تكون القيمة `null` إذا واصل قبل اختيار دولة.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                الطرق الأخرى للتحقق التي قدمتها تلك الدولة للشخص عند متابعته،
                بالترتيب الذي عُرضت به: `statement` (تحميل كشف حساب)، ثم
                `microdeposits`. تكون فارغة في حال لم تقدم أي طريقة.
            institution_id:
              type: string
              nullable: true
              description: >-
                بالنسبة لـ `institution_unsupported`، معرف البنك الذي لم يتمكن
                الشخص من استخدامه: البنك الذي اختاره، أو البنك الذي انتهت عنده
                محاولته الأخيرة. تأخذه Didit من قائمتها الخاصة بالبنوك، ولا
                تأخذه أبداً من جهاز الشخص، وبالتالي فإن البنك الذي لا تحتويه تلك
                القائمة يكون `null`. ويكون `null` لكل سبب آخر.
            institution_name:
              type: string
              nullable: true
              description: >-
                بالنسبة لـ `institution_unsupported`، اسم ذلك البنك، من نفس
                القائمة مثل `institution_id`. ويكون `null` عندما لا تحتوي تلك
                القائمة على البنك، ولكل سبب آخر.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: متى تابع الشخص.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            وقت حذف الإثبات البنكي بموجب `bank_evidence_retention_days`. وتكون
            القيمة `null` بخلاف ذلك.
        warnings:
          type: array
          items:
            type: string
          description: >-
            رموز معلوماتية، على سبيل المثال `holder_declared`. لا يغيّر التحذير
            الحالة بمفرده أبداً.
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            سبب صدور القرار بالشكل الذي ظهر به، على سبيل المثال
            `OWNER_NAME_PARTIAL`. قد ينطبق أكثر من سبب. `NOT_COVERED`: واصل
            الشخص دون بنك لعدم وجود طريقة يمكنها التحقق من دولته أو بنكه.
            `SKIPPED`: اختار الشخص المتابعة دون بنك رغم توفر طريقة للتحقق. لا
            تتم إضافة أي منهما إذا كانت هناك محاولة تم تقييمها قد حسمت الخطوة
            بالفعل.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        نتيجة موقّع واحد لخطوة واحدة من التوقيع الإلكتروني. راجع [تقرير التوقيع
        الإلكتروني](/ar/core-technology/electronic-signature/report-electronic-signature).
      properties:
        id:
          type: string
          format: uuid
          description: مرّره كـ `signature_id` لتنزيل أدلة هذا الموقّع أو التحقق من توقيعه.
        node_id:
          type: string
          description: خطوة سير العمل التي أنتجتها.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: >-
            موضع الموقّع ضمن الخطوة. القيمة `signed` فقط هي التي تعني أن
            المستندات قد تم توقيعها.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: >-
            نتيجة الخطوة. يُعيّنها التحذير من خلال قاعدته؛ وتُطبّق قواعد الحالة
            المخصصة بعد ذلك.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple` (افتراضي) أو `aes`. التوقيع `qes` (التوقيع الإلكتروني
            المؤهل، QES) هو إضافة غير متوفرة بعد.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: '`pdf` للتوقيع من النوع Simple، و`pades` للنوع Advanced (AES).'
        profile:
          type: string
          nullable: true
          description: '`PAdES-B-LT` بمجرد إتمام توقيع متقدم (AES)، وخلاف ذلك null.'
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                اسم الموقّع. يتم التحقق منه (من التحقق من الهوية المقبول أو
                الجلسة) باستثناء المستوى Simple دون اسم جلسة تم التحقق منه، حيث
                يكون الاسم هو ما كتبه الموقّع ولا يتم التحقق منه.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: المسمى الوظيفي للشخص الرئيسي، كما تم التصريح به.
            roles:
              type: array
              items:
                type: string
              description: الأدوار المنظمة للشخص الرئيسي، كما تم التصريح بها للشركة.
            identity_session_id:
              type: string
              format: uuid
              description: جلسة KYC التي تحققت من الموقّع.
        identity_used:
          type: object
          description: >-
            الهوية التي تم التحقق منها والتي يعتمد عليها التوقيع. فارغة بالنسبة
            للتوقيع البسيط (Simple) بدون هوية تم التحقق منها.
          properties:
            session_id:
              type: string
              format: uuid
            kyc_id:
              type: string
              format: uuid
              nullable: true
            verified:
              type: boolean
            expected_name:
              type: string
              nullable: true
              description: الاسم الذي كان على الموقّع مطابقته.
        certificate:
          type: object
          nullable: true
          description: >-
            الشهادة التي تم توقيع المستندات بها. تكون `null` حتى يتم التوقيع،
            وتكون دائماً `null` للتوقيع البسيط (Simple signature).
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: الرقم التسلسلي، بنظام السداسي عشر.
            valid_from:
              type: string
              format: date-time
            valid_until:
              type: string
              format: date-time
        confirmation:
          type: object
          properties:
            channel:
              type: string
              nullable: true
              enum:
                - email
                - sms
              description: '`null` للتوقيع من النوع Simple، والذي لا يحتوي على رمز.'
            destination:
              type: string
              nullable: true
              description: جهة الاتصال المقنّعة التي أُرسل الرمز إليها.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: الرموز المُدخلة، بما في ذلك الرمز الصحيح.
        timestamp:
          type: object
          nullable: true
          description: >-
            الختم الزمني RFC 3161 في التوقيع، الصادر عن Didit. تكون القيمة
            `null` حتى يتم التوقيع، ودائماً `null` للتوقيع البسيط (Simple).
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: دائماً `false` لـ AES.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  المستند الموجود في نسخة هذا الموقّع. استخدمه لتنزيل الملف
                  الموقّع.
              uuid:
                type: string
                format: uuid
                description: مطابق لـ `id`.
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: >-
                  صفحات المستند الموقعة. بالنسبة لـ Word، صفحات ملف PDF
                  المُحوَّل.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: تشفير SHA-256 للمستند كما عُرض على الموقّع.
              sha256_signed:
                type: string
                nullable: true
                description: تشفير SHA-256 لملف PDF الموقّع، بمجرد توقيعه.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: >-
                  `not_signed`: تم فتحها ولكن لم يتم توقيعها. `not_reached`: لم
                  يتم فتحها أبداً.
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  متى وصل الموقّع إلى نهاية مستند بدون حقول، عندما تتطلب الخطوة
                  ذلك.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  متى وافق الموقّع على مستند بدون حقول، أو أكمل تعبئة حقول مستند
                  يحتوي على حقول.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  مسار ملف PDF الموقّع بمجرد توقيعه. راجع [تنزيل مستند
                  موقّع](/ar/sessions-api/electronic-signature/download-signed-document).
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: >-
                  `fields` لمستند يحتوي على حقول، و`read_and_agree` لمستند لا
                  يحتوي عليها.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: '`pdf`، أو `docx` لمستند Word قامت Didit بتحويله إلى PDF.'
              conversion:
                type: object
                nullable: true
                description: >-
                  `null` لملف PDF. بالنسبة لمستند Word، الملف الأصلي والملف
                  المحوَّل.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: اسم ملف Word الأصلي الخاص بك.
                  sha256:
                    type: string
                    description: تشفير SHA-256 لملف Word الأصلي الخاص بك.
                  size_bytes:
                    type: integer
                    description: حجم ملف Word الأصلي الخاص بك.
                  converter:
                    type: string
                    description: إصدار المحوِّل الذي أنتج ملف PDF.
              fields:
                type: array
                description: >-
                  الحقول الموجودة في المستند، مع قيمها. فارغة لأي مستند بدون
                  حقول.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: >-
            التوقيع والأحرف الأولى التي اعتمدها الموقّع لحقول التوقيع والأحرف
            الأولى. تكون قيمتهما `null` حتى يعتمد الموقّع أحدهما.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: >-
                `typed`: الاسم المتحقق منه بأسلوب خط اليد. `drawn`: مرسوم بإصبع
                أو بفأرة.
            font:
              type: string
              nullable: true
              description: نمط خط اليد للتوقيع المكتوب. `null` عندما يكون مرسوماً.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            متى وافق الموقّع، في شاشة المراجعة، على توقيع المستندات إلكترونياً.
            يتم تعيينها عندما يحتوي أي مستند على حقول.
        evidence_file:
          type: string
          nullable: true
          description: >-
            مسار ملف PDF للأدلة، بمجرد توقيعه. راجع [تنزيل أدلة
            التوقيع](/ar/sessions-api/electronic-signature/download-evidence).
        warnings:
          type: array
          description: >-
            التحذيرات الصادرة لهذا الموقّع. راجع [تحذيرات التوقيع
            الإلكتروني](/ar/core-technology/electronic-signature/warnings-electronic-signature).
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - SIGNATURE_DECLINED
                  - SIGNATURE_OTP_FAILED
                  - SIGNATURE_NAME_MISMATCH
                  - SIGNATURE_IDENTITY_NOT_VERIFIED
                  - SIGNATURE_DOCUMENT_CHANGED
                  - SIGNATURE_FIELD_DATA_MISSING
              node_id:
                type: string
        validation:
          type: object
          nullable: true
          description: >-
            آخر فحص تشفيري للمستندات الموقعة. تكون القيمة `null` حتى يتم توقيع
            المستندات. إذا لم تتمكن Didit من تأكيد نتيجة التوقيع، فستكون القيمة
            `{"valid": null, "reason": "signature_provider_outcome_unknown",
            "checked_at": ...}` وتظل `status` بالحالة `signing`: عاملها كأنها
            غير موقعة.
          properties:
            valid:
              type: boolean
              nullable: true
              description: >-
                تكون القيمة `true` عندما تكون جميع المستندات صالحة. وتكون `null`
                عندما يتعذر تأكيد نتيجة التوقيع.
            reason:
              type: string
              description: >-
                يتم تعيينه عندما تكون قيمة `valid` هي `null`:
                `signature_provider_outcome_unknown`.
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: >-
                      تكون `true` عندما يكون كل من التوقيع والطابع الزمني صالحين
                      وموثوقين.
                  integrity:
                    type: boolean
                    description: تكون `true` عندما يكون المستند غير معدّل منذ التوقيع.
                  trusted:
                    type: boolean
                    description: تكون `true` عندما تتسلسل شهادة التوقيع إلى جذر موثوق.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      فحص القائمة الموثوقة للاتحاد الأوروبي (EU Trusted List).
                      بالنسبة لـ AES: `{"status": "not_applicable", "reason":
                      "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      الشهادة التي تم توقيع المستندات بها. تكون `null` حتى يتم
                      التوقيع، وتكون دائماً `null` للتوقيع البسيط (Simple
                      signature).
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: الرقم التسلسلي، بنظام السداسي عشر.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      الختم الزمني RFC 3161 في التوقيع، الصادر عن Didit. تكون
                      القيمة `null` حتى يتم التوقيع، ودائماً `null` للتوقيع
                      البسيط (Simple).
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: دائماً `false` لـ AES.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: متى يتوقف رابط التوقيع عن العمل.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: عنوان IP الخاص بالموقّع عندما طلب رمزه.
        place:
          type: string
          nullable: true
          description: 'لم يتم جمعها: تكون دائماً `null`.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: معرّف فريد لخطوة فحص AML هذه في مخطط سير العمل.
        status:
          type: string
          description: >-
            حالة مستوى الميزة لفحص AML هذا. مستقلة عن `status` الجلسة من المستوى
            الأعلى — يمكن أن تصل الجلسة إلى قرارها العام بينما تظل الميزة
            الفردية `In Review`.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: العدد الإجمالي للتطابقات التي تم العثور عليها
        entity_type:
          type: string
          description: 'نوع الكيان المفحوص: شخص أو شركة'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  معرّف Didit الثابت لنتيجة المطابقة: `hit_` متبوعاً بـ 24 حرفاً
                  سداسياً عشرياً. يحتفظ الكيان المطابق نفسه بنفس `id` عند فحص
                  الشخص المعني مرة أخرى. مرّره كـ `hit_id` إلى endpoints مراجعة
                  نتائج مطابقة AML.
              url:
                type: string
                format: uri
                description: رابط المصدر للمطابقة
              match:
                type: boolean
                description: ما إذا كان هذا تطابقاً مؤكداً
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  درجة التطابق المرجحة القديمة في النطاق 0-1 (مثل `0.73`).
                  استخدم `match_score` (0-100) بدلاً منها.
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  ما إذا كان الكيان المتطابق هو الهدف المباشر للإدراج (على عكس
                  كونه طرفاً ذا صلة). وتكون `null` عندما لا يحدد المصدر ذلك.
              caption:
                type: string
                description: تسمية توضيحية أو عنوان للتطابق
              datasets:
                type: array
                items:
                  type: string
                  enum:
                    - PEP
                    - PEP Level 1
                    - PEP Level 2
                    - PEP Level 3
                    - PEP Level 4
                    - Sanctions
                    - Adverse Media
                    - Warnings and Regulatory Enforcement
                    - Fitness and Probity
                    - SIP
                    - SIE
                    - Insolvency
                    - Other Lists
                description: >-
                  قائمة بفئات مجموعات البيانات التي تم العثور على التطابق فيها.
                  توضح ما إذا كان الكيان قد ظهر في قوائم الأشخاص المعرضين
                  سياسياً PEP (مع تحديد المستوى)، أو قواعد بيانات العقوبات، أو
                  الأخبار السلبية، أو التحذيرات/إنفاذ القوانين التنظيمية، أو
                  مجموعات بيانات الامتثال الأخرى. وتكون `Other Lists` عندما لا
                  يحدد مصدر الكيان أيًا من هذه الفئات.
              features:
                type: object
                nullable: true
                description: سمات إضافية للتطابق
              rca_name:
                type: string
                description: اسم RCA إن وُجد
              last_seen:
                type: string
                format: date-time
                description: تاريخ آخر ظهور للتطابق
              risk_view:
                type: object
                properties:
                  crimes:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  countries:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  categories:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  custom_list:
                    type: object
              first_seen:
                type: string
                format: date-time
                description: تاريخ أول ظهور للتطابق
              properties:
                type: object
                properties:
                  name:
                    type: array
                    items:
                      type: string
                  alias:
                    type: array
                    items:
                      type: string
                  notes:
                    type: array
                    items:
                      type: string
                  title:
                    type: string
                    nullable: true
                  gender:
                    type: array
                    items:
                      type: string
                  height:
                    type: string
                    nullable: true
                  topics:
                    type: string
                    nullable: true
                  weight:
                    type: string
                    nullable: true
                  address:
                    type: string
                    nullable: true
                  country:
                    type: string
                    nullable: true
                  website:
                    type: string
                    nullable: true
                  eyeColor:
                    type: string
                    nullable: true
                  keywords:
                    type: string
                    nullable: true
                  lastName:
                    type: array
                    items:
                      type: string
                  position:
                    type: string
                    nullable: true
                  religion:
                    type: string
                    nullable: true
                  birthDate:
                    type: array
                    items:
                      type: string
                  education:
                    type: array
                    items:
                      type: string
                  ethnicity:
                    type: string
                    nullable: true
                  firstName:
                    type: array
                    items:
                      type: string
                  hairColor:
                    type: string
                    nullable: true
                  weakAlias:
                    type: string
                    nullable: true
                  birthPlace:
                    type: array
                    items:
                      type: string
                  modifiedAt:
                    type: string
                    nullable: true
                  wikidataId:
                    type: string
                    nullable: true
                  citizenship:
                    type: string
                    nullable: true
                  nationality:
                    type: string
                    nullable: true
              match_score:
                type: number
                description: >-
                  درجة الثقة الموزونة بالهوية (0-100) المحسوبة من تشابه الأسماء
                  وتاريخ الميلاد وتطابق الدولة. تُستخدم لتحديد ما إذا كان
                  التطابق إيجابياً كاذباً أو تطابقاً محتملاً.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  درجة مخاطر الكيان (0-100). تُستخدم لتحديد حالة AML النهائية
                  (مقبولة/قيد المراجعة/مرفوضة) بناءً على أعلى risk_score بين
                  التطابقات التي ليست إيجابية كاذبة.
              review_status:
                type: string
                description: >-
                  حالة المراجعة لهذه النتيجة. يمكن أن تكون 'Unreviewed'، أو
                  'Confirmed Match'، أو 'False Positive'، أو 'Inconclusive'.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: تفصيل دقيق لكيفية احتساب match_score.
                properties:
                  name_score:
                    type: integer
                    description: النسبة المئوية الخام لتشابه الأسماء (0-100).
                  name_weight:
                    type: integer
                    description: الوزن الأصلي للاسم من التكوين (0-100).
                  name_weight_normalized:
                    type: number
                    description: >-
                      الوزن المعياري للاسم بعد إعادة الترجيح بسبب البيانات
                      المفقودة (0-100).
                  name_contribution:
                    type: number
                    description: النقاط التي ساهم بها الاسم في النتيجة الإجمالية.
                  dob_score:
                    type: integer
                    description: درجة تطابق تاريخ الميلاد (-100 إلى 100).
                  dob_weight:
                    type: integer
                    description: الوزن الأصلي لتاريخ الميلاد من التكوين (0-100).
                  dob_weight_normalized:
                    type: number
                    description: >-
                      الوزن المعياري لتاريخ الميلاد بعد إعادة الترجيح بسبب
                      البيانات المفقودة (0-100).
                  dob_contribution:
                    type: number
                    description: النقاط التي ساهم بها تاريخ الميلاد في النتيجة الإجمالية.
                  country_score:
                    type: integer
                    description: درجة تطابق الدولة (-100 إلى 100).
                  country_weight:
                    type: integer
                    description: الوزن الأصلي للدولة من التكوين (0-100).
                  country_weight_normalized:
                    type: number
                    description: >-
                      الوزن المعياري للدولة بعد إعادة الترجيح بسبب البيانات
                      المفقودة (0-100).
                  country_contribution:
                    type: number
                    description: النقاط التي ساهمت بها الدولة في النتيجة الإجمالية.
                  document_number_match_type:
                    type: string
                    description: نتيجة تقييم "Golden Key" لرقم المستند.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: وصف سهل القراءة لتأثير رقم المستند على النتيجة.
                  total_score:
                    type: integer
                    description: درجة التطابق المرجحة النهائية (0-100).
              pep_matches:
                type: array
                items:
                  type: object
                  properties:
                    aliases:
                      type: array
                      items:
                        type: string
                    education:
                      type: array
                      items:
                        type: string
                    list_name:
                      type: string
                    publisher:
                      type: string
                    source_url:
                      type: string
                      format: uri
                    description:
                      type: string
                    matched_name:
                      type: string
                    pep_position:
                      type: string
                    date_of_birth:
                      type: string
                    other_sources:
                      type: array
                      items:
                        type: string
                    place_of_birth:
                      type: string
              linked_entities:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: array
                      items:
                        type: string
                    active:
                      type: array
                      items:
                        type: string
                    status:
                      type: array
                      items:
                        type: string
                    details:
                      type: array
                      items:
                        type: string
                    relation:
                      type: array
                      items:
                        type: string
              warning_matches:
                type: array
                description: >-
                  قائمة بتطابقات التحذيرات وإنفاذ القوانين التنظيمية. تتضمن
                  مدخلات من الفئات: Warning، و SIP، و Warnings and Regulatory
                  Enforcement، و Fitness and Probity، و SIE، و Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: اسم جهة نشر قائمة التحذير
                    matched_name:
                      type: string
                      description: الاسم المتطابق في قائمة التحذير
                    description:
                      type: string
                      description: وصف قيد التحذير
                    publisher:
                      type: string
                      description: الناشر أو مصدر التحذير
                    source_url:
                      type: string
                      format: uri
                      description: رابط URL لمصدر التحذير
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: عناوين URL إضافية للمصدر
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: الدول المرتبطة بالتحذير
                    created_at:
                      type: string
                      nullable: true
                      description: تاريخ إنشاء قيد التحذير
                    updated_at:
                      type: string
                      nullable: true
                      description: تاريخ آخر تحديث لقيد التحذير
                    additional_data:
                      type: object
                      description: >-
                        بيانات إضافية من مصدر التحذير. قد تحتوي على كائن `data`
                        مع مصفوفة `case_details`.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: تفاصيل حالات التحذير المرتبطة بهذا التطابق
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: نوع حالة التحذير
                                    enum:
                                      - Accusation
                                      - Arrest
                                      - Bribery
                                      - Criminal
                                      - Fraud
                                      - Illegal Fundraising
                                      - Non-conviction Terror
                                      - Proclaimed Offender
                                      - Regulatory Enforcement
                                      - Terrorism
                                      - Terrorism-related
                                      - Terrorism-related listing
              sanction_matches:
                type: array
                description: >-
                  قائمة بتطابقات قوائم العقوبات التي تم العثور عليها لهذا
                  الكيان.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: اسم (أو أسماء) قائمة (أو قوائم) العقوبات
                    matched_name:
                      type: string
                      description: الاسم المتطابق في قائمة العقوبات
                    description:
                      type: string
                      description: وصف قيد العقوبات
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        سبب فرض العقوبات على الكيان بنص حر. مجمّع من إدخالات
                        الأسباب في قائمة العقوبات. أمثلة: 'Executive Order 13224
                        (Terrorism)'، و'Support for actions undermining
                        Ukraine's sovereignty'، و'Listed due to national
                        security concerns.'
                    source_url:
                      type: string
                      format: uri
                      description: رابط URL لمصدر العقوبة
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: عناوين URL إضافية للمصدر
                    details:
                      type: array
                      items:
                        type: string
                      description: تفاصيل إضافية حول العقوبة
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: الأساس القانوني للعقوبة
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: تاريخ (تواريخ) إدراج الكيان
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: معرّف (معرّفات) قائمة العقوبات
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: برنامج (برامج) العقوبات التي أُدرج الكيان ضمنها
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: الجهة/الجهات التي فرضت العقوبة
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: تاريخ (أو تواريخ) آخر تحديث لبيانات قيد العقوبات
                    additional_data:
                      type: object
                      description: >-
                        بيانات إضافية من مصدر العقوبات لم يتم التقاطها في الحقول
                        الرئيسية
              adverse_media_details:
                type: object
                properties:
                  sentiment:
                    type: string
                  entity_type:
                    type: string
                  sentiment_score:
                    type: integer
                  adverse_keywords:
                    type: object
                    additionalProperties:
                      type: integer
              adverse_media_matches:
                type: array
                items:
                  type: object
                  properties:
                    country:
                      type: string
                    summary:
                      type: string
                    headline:
                      type: string
                    sentiment:
                      type: string
                    thumbnail:
                      type: string
                      format: uri
                    source_url:
                      type: string
                      format: uri
                    author_name:
                      type: string
                      nullable: true
                    other_sources:
                      type: array
                      items:
                        type: string
                    adverse_keywords:
                      type: array
                      items:
                        type: string
                    sentiment_score:
                      type: integer
                    publication_date:
                      type: string
                      format: date-time
              additional_information:
                type: object
        score:
          type: number
          format: float
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            درجة فحص AML الإجمالية — أعلى درجة مخاطر عبر جميع النتائج المتطابقة
            (عدد عشري float، 0-100). تكون `null` حتى يتم حسابها.
        screened_data:
          type: object
          properties:
            full_name:
              type: string
            nationality:
              type: string
            date_of_birth:
              type: string
              format: date
            document_number:
              type: string
              nullable: true
        is_ongoing_monitoring_enabled:
          type: boolean
          description: >-
            ما إذا كانت مراقبة AML المستمرة مُمكّنة لهذا الفحص. عندما تكون
            `true`، يُعاد فحص الكيان دورياً وتُحدّث أي نتائج مطابقة جديدة
            التقرير.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            التاريخ (YYYY-MM-DD) الذي ستتم فيه فوترة اشتراك المراقبة المستمرة
            هذا في المرة القادمة. يُحسب كتاريخ آخر فوترة للمراقبة المستمرة
            بالإضافة إلى 365 يوماً عندما يكون `is_ongoing_monitoring_enabled =
            true`؛ وخلاف ذلك `null`. هذا تاريخ فوترة، وليس تاريخ فحص - استخدم
            `last_ongoing_screening_at` لذلك.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            وقت آخر اكتمال لإعادة فحص هذا السجل بواسطة المراقبة المستمرة، سواء
            تغيرت النتيجة أم لا. تكون القيمة `null` إذا لم تتم إعادة فحص السجل
            مطلقاً؛ ولا يتم ملؤها بأثر رجعي من تاريخ التفعيل أو تاريخ الفوترة.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            أحدث تاريخ لتحديث مجموعة بيانات AML أبلغ عنه المزود في وقت ذلك
            الفحص. تكون القيمة `null` عندما لم يُبلغ المزود عن أي تواريخ
            لمجموعات البيانات؛ ولا يتم تقديرها نهائياً.
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة التي
                  ينتمي إليها التحذير. في فحص AML يكون هذا عادةً `AML`، ولكن
                  التعداد (enum) أعلاه هو المرجع المعتمد عبر جميع تحذيرات
                  الميزات في payload القرار.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
    GeolocationCheck:
      type: object
      description: >-
        نتيجة واحدة للتحقق من الموقع الجغرافي، وهي المحاولة المقبولة لعقدة سير
        عمل واحدة. القياس وعدم اليقين والأصالة هي مفاتيح منفصلة، لذا تتم قراءة
        التحديد الدقيق غير المقترن بإقرار بشكل مختلف عن التحديد غير الدقيق
        المقترن بإقرار.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            عقدة سير العمل التي أنتجت هذه النتيجة، لكي يظل سير العمل الذي يتضمن
            خطوتين للتحقق من الموقع قابلاً للقراءة.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            حالة مستوى الميزة لخطوة التحقق من الموقع هذه، ويتم تحديدها بناءً على
            تحذيراتها. مستقلة عن `status` الجلسة.
        outcome:
          type: string
          nullable: true
          description: ما حدث في هذه المحاولة.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            ما منحه نظام التشغيل أو المتصفح. تعني القيمة `not_requested` أن
            الخطوة تستخدم موقع IP الخاص بالاتصال فقط، وبالتالي لا يُطلب الإذن من
            الشخص مطلقاً.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            خط عرض WGS84 للموقع الجغرافي المثبّت. `null` عند عدم وجود تثبيت
            للموقع.
          format: double
        longitude:
          type: number
          nullable: true
          description: خط طول WGS84 للإحداثية المحددة. `null` عند عدم وجود إحداثية محددة.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            نصف قطر عدم اليقين بالأمتار، عند مستوى الثقة في
            `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            مستوى الثقة الذي تخصصه المنصة لـ `accuracy_m`: `p95` (المتصفحات)، أو
            `p68` (Android)، أو `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: وقت تطبيق الجهاز للإصلاح، وفقاً لساعته الخاصة.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: عدد الثواني بين تحديد الجهاز للموقع واستلام Didit له.
        source:
          type: string
          nullable: true
          description: >-
            مصدر تحديد الموقع، عندما توضحه المنصة. تعني `ip` أن الموقع هو موقع
            عنوان IP الخاص بالاتصال.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: العميل الذي أصدر الإصلاح.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: إصدار SDK الذي أنتج الإصلاح.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            تكون `true` عندما يشير الجهاز إلى أن الإحداثيات جاءت من مزود موقع
            زائف أو برنامج محاكاة. وتكون `null` عندما لا تُبلغ المنصة عن ذلك (لا
            يمكن للمتصفحات معرفة ذلك)؛ والقيمة `null` لا تعني `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            لنظام iOS فقط: تكون القيمة `true` عندما يتم تحديد الموقع بواسطة ملحق
            خارجي، وتكون `null` في الحالات الأخرى.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            ما إذا كان إقرار الجهاز يدعم الإصلاح. `unsupported` هو ما تبلّغ عنه
            المتصفحات، لأن الويب لا يحتوي على آلية إقرار؛ وهو ليس فشلاً.
        country_code:
          type: string
          nullable: true
          description: الدولة وفق المعيار ISO 3166-1 alpha-2 التي يقع فيها تحديد الموقع.
        region_code:
          type: string
          nullable: true
          description: التقسيم الإداري حسب معيار ISO 3166-2 الذي يقع فيه الإصلاح.
        city:
          type: string
          nullable: true
          description: أقرب مكان مأهول بالسكان، وهو اسم للمراجعين.
        geofence:
          type: object
          description: نتيجة قواعد الدولة والمنطقة للخطوة.
          properties:
            enabled:
              type: boolean
              description: ما إذا كانت الخطوة تطبق أي قاعدة دولة أو منطقة.
            result:
              type: string
              nullable: true
              description: >-
                موضع الموقع الجغرافي مقارنةً بالقواعد. تعني القيمة
                `undetermined` أن دائرة الدقة تتجاوز الحدود أو أن الموقع
                الجغرافي لم يُحدد لأي دولة؛ وهذا لا يُعد دليلاً على وجوده
                بالخارج.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            تكون القيمة `true` عندما تكون قيمة `geofence.result` هي `inside`،
            و`false` عندما تكون `outside`، و`null` في غير ذلك.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            من أي موضع تم تقييم نتيجة المنطقة: تحديد موقع `device`، أو موقع `ip`
            الخاص بالاتصال.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: معرّفات المناطق المسموح بها التي تم إعدادها والتي يقع الموضع داخلها.
        blocked_areas:
          type: array
          items:
            type: string
          description: معرّفات المناطق المحظورة التي تم إعدادها والتي يقع الموضع فيها.
        position_source:
          type: string
          nullable: true
          description: >-
            المصدر الذي تستمد منه الخطوة الموقع الجغرافي، وفقاً للإعدادات:
            مقارنة الجهاز بموقع IP الجغرافي، أو الجهاز فقط، أو موقع IP الجغرافي
            فقط.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            حالة الاتصال والجهاز، وقيمة كل منها `true` أو `false` أو `null`
            عندما يتعذر على المصدر تحديد ذلك.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            المسافة إلى موقع عنوان IP للجلسة بعد طرح كلا قطري عدم اليقين؛ `0`
            عند تداخلهما.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            نصف القطر الإجمالي الذي تم طرحه: نصف قطر موقع عنوان IP بالإضافة إلى
            دقة هذا التحديد.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            ما إذا كانت `ip_distance_km` تقع ضمن المسافة المهيأة في الخطوة.
            `null` عندما يكون أيٌّ من الطرفين غير معروف.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            المسافة إلى العنوان المرمز جغرافياً في مستند الهوية أو إثبات
            العنوان. `null` في حال عدم وجود عنوان محفوظ في الملف.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            ما إذا كان هامش التسامح مع السفر في الخطوة قد تجاوز عن المسافة من
            العنوان. يكون `null` عندما يكون التسامح معطلاً.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            في المحاولة النهائية: هذا الفحص بالإضافة إلى حالات عدم التطابق
            السابقة لنفس الشخص على التوالي.
        attempts:
          type: integer
          description: رقم هذه المحاولة داخل العقدة، بدءاً من 1.
        consent:
          type: object
          nullable: true
          description: >-
            الموافقة التي قدمها الشخص قبل مطالبة النظام، مسجلة مع إصدار الصياغة
            واللغة التي رآها.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  الميزة التي أنشأت هذا التحذير. تحدد القيمة كتلة الميزة التي
                  ينتمي إليها التحذير. عادةً ما تستخدم مصفوفة تحذيرات كل وحدة
                  نمطية القيمة المطابقة لوحدتها (مثل `PHONE` داخل
                  `phone_verifications[].warnings`)، ولكن التعداد (enum) أعلاه
                  هو المرجع المعتمد عبر جميع تحذيرات الميزات في payload القرار.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: معرّف عقدة مخطط سير العمل التي أصدرت هذا التحذير
          description: >-
            التحذيرات التي أثارتها خطوة التحقق من الموقع هذه، مع تعيين `feature`
            إلى `GEOLOCATION`. تبدأ رموز التحذير بـ `LOCATION_`.
    GeolocationAttempt:
      type: object
      description: >-
        محاولة واحدة لخطوة التحقق من الموقع: نفس المفاتيح الموجودة في
        `geolocation_checks[]` باستثناء `warnings`، بالإضافة إلى وقت استلام
        Didit لها.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            عقدة سير العمل التي أنتجت هذه النتيجة، لكي يظل سير العمل الذي يتضمن
            خطوتين للتحقق من الموقع قابلاً للقراءة.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            حالة مستوى الميزة لخطوة التحقق من الموقع هذه، ويتم تحديدها بناءً على
            تحذيراتها. مستقلة عن `status` الجلسة.
        outcome:
          type: string
          nullable: true
          description: ما حدث في هذه المحاولة.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            ما منحه نظام التشغيل أو المتصفح. تعني القيمة `not_requested` أن
            الخطوة تستخدم موقع IP الخاص بالاتصال فقط، وبالتالي لا يُطلب الإذن من
            الشخص مطلقاً.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: >-
            خط عرض WGS84 للموقع الجغرافي المثبّت. `null` عند عدم وجود تثبيت
            للموقع.
          format: double
        longitude:
          type: number
          nullable: true
          description: خط طول WGS84 للإحداثية المحددة. `null` عند عدم وجود إحداثية محددة.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            نصف قطر عدم اليقين بالأمتار، عند مستوى الثقة في
            `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            مستوى الثقة الذي تخصصه المنصة لـ `accuracy_m`: `p95` (المتصفحات)، أو
            `p68` (Android)، أو `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: وقت تطبيق الجهاز للإصلاح، وفقاً لساعته الخاصة.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: عدد الثواني بين تحديد الجهاز للموقع واستلام Didit له.
        source:
          type: string
          nullable: true
          description: >-
            مصدر تحديد الموقع، عندما توضحه المنصة. تعني `ip` أن الموقع هو موقع
            عنوان IP الخاص بالاتصال.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: العميل الذي أصدر الإصلاح.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: إصدار SDK الذي أنتج الإصلاح.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            تكون `true` عندما يشير الجهاز إلى أن الإحداثيات جاءت من مزود موقع
            زائف أو برنامج محاكاة. وتكون `null` عندما لا تُبلغ المنصة عن ذلك (لا
            يمكن للمتصفحات معرفة ذلك)؛ والقيمة `null` لا تعني `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            لنظام iOS فقط: تكون القيمة `true` عندما يتم تحديد الموقع بواسطة ملحق
            خارجي، وتكون `null` في الحالات الأخرى.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            ما إذا كان إقرار الجهاز يدعم الإصلاح. `unsupported` هو ما تبلّغ عنه
            المتصفحات، لأن الويب لا يحتوي على آلية إقرار؛ وهو ليس فشلاً.
        country_code:
          type: string
          nullable: true
          description: الدولة وفق المعيار ISO 3166-1 alpha-2 التي يقع فيها تحديد الموقع.
        region_code:
          type: string
          nullable: true
          description: التقسيم الإداري حسب معيار ISO 3166-2 الذي يقع فيه الإصلاح.
        city:
          type: string
          nullable: true
          description: أقرب مكان مأهول بالسكان، وهو اسم للمراجعين.
        geofence:
          type: object
          description: نتيجة قواعد الدولة والمنطقة للخطوة.
          properties:
            enabled:
              type: boolean
              description: ما إذا كانت الخطوة تطبق أي قاعدة دولة أو منطقة.
            result:
              type: string
              nullable: true
              description: >-
                موضع الموقع الجغرافي مقارنةً بالقواعد. تعني القيمة
                `undetermined` أن دائرة الدقة تتجاوز الحدود أو أن الموقع
                الجغرافي لم يُحدد لأي دولة؛ وهذا لا يُعد دليلاً على وجوده
                بالخارج.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            تكون القيمة `true` عندما تكون قيمة `geofence.result` هي `inside`،
            و`false` عندما تكون `outside`، و`null` في غير ذلك.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            من أي موضع تم تقييم نتيجة المنطقة: تحديد موقع `device`، أو موقع `ip`
            الخاص بالاتصال.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: معرّفات المناطق المسموح بها التي تم إعدادها والتي يقع الموضع داخلها.
        blocked_areas:
          type: array
          items:
            type: string
          description: معرّفات المناطق المحظورة التي تم إعدادها والتي يقع الموضع فيها.
        position_source:
          type: string
          nullable: true
          description: >-
            المصدر الذي تستمد منه الخطوة الموقع الجغرافي، وفقاً للإعدادات:
            مقارنة الجهاز بموقع IP الجغرافي، أو الجهاز فقط، أو موقع IP الجغرافي
            فقط.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            حالة الاتصال والجهاز، وقيمة كل منها `true` أو `false` أو `null`
            عندما يتعذر على المصدر تحديد ذلك.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            المسافة إلى موقع عنوان IP للجلسة بعد طرح كلا قطري عدم اليقين؛ `0`
            عند تداخلهما.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            نصف القطر الإجمالي الذي تم طرحه: نصف قطر موقع عنوان IP بالإضافة إلى
            دقة هذا التحديد.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            ما إذا كانت `ip_distance_km` تقع ضمن المسافة المهيأة في الخطوة.
            `null` عندما يكون أيٌّ من الطرفين غير معروف.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            المسافة إلى العنوان المرمز جغرافياً في مستند الهوية أو إثبات
            العنوان. `null` في حال عدم وجود عنوان محفوظ في الملف.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            ما إذا كان هامش التسامح مع السفر في الخطوة قد تجاوز عن المسافة من
            العنوان. يكون `null` عندما يكون التسامح معطلاً.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            في المحاولة النهائية: هذا الفحص بالإضافة إلى حالات عدم التطابق
            السابقة لنفس الشخص على التوالي.
        attempts:
          type: integer
          description: رقم هذه المحاولة داخل العقدة، بدءاً من 1.
        consent:
          type: object
          nullable: true
          description: >-
            الموافقة التي قدمها الشخص قبل مطالبة النظام، مسجلة مع إصدار الصياغة
            واللغة التي رآها.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        received_at:
          type: string
          nullable: true
          description: وقت تلقي Didit للمحاولة.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        ما يمتلكه المالك، بنفس الهيكل لكل دولة ومصدر سجل. يكون null عندما لا
        يذكر السجل أي حصة. النطاق (على سبيل المثال 25-50% لـ UK PSC) لا يُعد
        حصة: يكون `percentage` بقيمة null ويظل النطاق في `ownership_min_shares`
        / `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: فئة السهم أو نوعه كما يسميه السجل.
        number_of_shares:
          type: number
          nullable: true
          description: عدد الأسهم المملوكة.
        currency:
          type: string
          nullable: true
          description: عملة القيم الموضحة أدناه حسب معيار ISO 4217.
        nominal_value:
          type: number
          nullable: true
          description: القيمة الاسمية لكل سهم.
        total_value:
          type: number
          nullable: true
          description: القيمة الإجمالية للحيازة.
        percentage:
          type: number
          nullable: true
          description: الحصة الدقيقة بالنسبة المئوية، حتى أربع منازل عشرية.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        عنوان يحدده السجل، بنفس الهيكل لكل دولة ومصدر سجل. كل مفتاح موجود
        دائماً؛ وأي جزء لا ينشره السجل يكون null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            نوع العنوان بأحرف صغيرة: `registered` للمقر المسجل؛ وأنواع أخرى كما
            يسميها السجل (على سبيل المثال `postal`، `office`). يكون `null` عندما
            لا يحدد السجل ماهية العنوان.
        address:
          type: string
          description: العنوان الكامل في سطر واحد. موجود دائماً في كل عنوان.
        street:
          type: string
          nullable: true
          description: الشارع والرقم.
        city:
          type: string
          nullable: true
          description: المدينة أو المنطقة.
        postal_code:
          type: string
          nullable: true
          description: الرمز البريدي.
        region:
          type: string
          nullable: true
          description: المنطقة أو الولاية أو المقاطعة.
        country_code:
          type: string
          nullable: true
          description: رمز الدولة وفقاً لـ ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: التسمية الخاصة بسجل الشركات للعنوان، إن وُجدت.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        نشاط تُصنّف الجهة المسؤولة عن السجل الشركة ضمنه، بنفس الهيكل لكل دولة
        ومصدر سجل.
      properties:
        code:
          type: string
          nullable: true
          description: رمز النشاط كما يطبعه السجل (على سبيل المثال `73110`).
        description:
          type: string
          nullable: true
          description: تسمية النشاط، عندما ينشرها السجل.
        scheme:
          type: string
          nullable: true
          description: >-
            نظام التصنيف، اسم واحد لكل نظام بغض النظر عن المصدر الذي أبلغ عنه:
            `UK SIC 2007`، و`US SIC`، و`NACE Rev. 2`، و`NACE Rev. 2.1`، و`NAF
            Rev. 2`، و`CNAE`، و`SBI`، و`NOGA 2008`، و`CAE Rev. 4`، و`Canada SIC
            1977`؛ تحتفظ الأنظمة الوطنية الأخرى باسم السجل نفسه. تكون القيمة
            فارغة Null عندما لا يحدد السجل اسم النظام.
        is_primary:
          type: boolean
          description: >-
            تكون القيمة True للنشاط الرئيسي للشركة. هناك مدخل أساسي واحد بالضبط
            عندما لا تكون القائمة فارغة.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        تفاصيل السجل الموحدة معيارياً من Didit للشركة: نتيجة الملكية
        (`ownership_error` و`section_errors` و`ubo_resolution`
        و`lite_enrichment`)، والتصحيحات التي أُجريت باستخدام update-data، وحقائق
        السجل التي ليس لها حقل خاص بها. لا يحمل أبداً السجل الخاص بمصدر السجل
        نفسه. كل مفتاح اختياري ولا يظهر إلا عندما يكون للشركة قيمة له؛ قد تُضاف
        مفاتيح جديدة. اقرأ الحقول القياسية (`addresses` و`industries`
        و`ownership` و`beneficial_owners[].shareholding`) لأي شيء تغطيه.
      properties:
        company_name:
          type: string
          description: اسم الشركة كما تم تصحيحه في لوحة التحكم.
        registration_number:
          type: string
          description: رقم التسجيل كما يذكره السجل أو تصحيح لوحة التحكم.
        country_code:
          type: string
          description: دولة التسجيل كما يوضحها سجل الشركات أو تصحيح من لوحة التحكم.
        region:
          type: string
          description: منطقة أو ولاية التسجيل.
        incorporation_date:
          type: string
          description: تاريخ التأسيس (ISO 8601).
        registration_date:
          type: string
          description: >-
            تاريخ التسجيل (ISO 8601) عندما يذكر السجل تاريخاً منفصلاً عن تاريخ
            التأسيس.
        dissolution_date:
          type: string
          description: تاريخ الحل (ISO 8601) عندما ينص عليه السجل.
        tax_number:
          type: string
          description: الرقم الضريبي.
        vat_number:
          type: string
          description: رقم ضريبة القيمة المضافة (VAT).
        legal_address:
          type: string
          description: العنوان القانوني كما تم تصحيحه في لوحة التحكم.
        registered_address:
          type: string
          description: العنوان المسجل كما هو مذكور في السجل.
        company_type:
          type: string
          description: الشكل القانوني.
        registry_status:
          type: string
          description: حالة الشركة في السجل.
        verification_status:
          type: string
          description: حالة التحقق.
        alternative_names:
          type: string
          description: الأسماء الأخرى التي تتداول أو تداولت الشركة تحتها.
        nature_of_business:
          type: string
          description: وصف النشاط.
        registered_capital:
          type: string
          description: رأس المال المسجل كما هو مطبوع.
        registered_capital_amount:
          type: string
          description: مبلغ رأس المال المسجل، كسلسلة عشرية.
        registered_capital_currency:
          type: string
          description: عملة رأس المال المسجل (ISO 4217).
        website:
          type: string
          description: الموقع الإلكتروني.
        email:
          type: string
          description: البريد الإلكتروني لجهة الاتصال.
        phone:
          type: string
          description: هاتف التواصل.
        legal_entity_identifier:
          type: string
          description: معرّف الكيان القانوني (LEI).
        location_of_registration:
          type: string
          description: مكان التسجيل.
        control_scheme:
          type: string
          description: نظام الحوكمة عندما يوفره سجل الشركات.
        ownership_error:
          type: string
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
          description: >-
            سبب عدم تسليم مستوى الملكية المطلوب، بنفس رموز
            `ownership.unavailable_reason`. يُعد `no_owners_on_record` (أجاب
            السجل ولم يُسمِّ أي مالك) و`ownership_section_unavailable` (لم يُرجع
            السجل قسم الملكية) نتيجتين مختلفتين.
        section_errors:
          type: object
          description: >-
            الأقسام التي لم يُرجعها السجل، مفهرسة حسب القسم (`officers`
            و`shareholders` و`group_structure`). أي قسم مدرج هنا لم يتم تسليمه
            أبداً: ولا تعني القائمة الفارغة بجانبه أي شيء عن الشركة.
          additionalProperties:
            $ref: '#/components/schemas/KYBRegistrySectionError'
        ubo_resolution:
          $ref: '#/components/schemas/KYBRegistryUboResolution'
        lite_enrichment:
          $ref: '#/components/schemas/KYBRegistryLiteEnrichment'
        registry_metadata:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
          description: >-
            حقول السجل الخاصة بالشركة، مفهرسة حسب تسميات السجل لها، كقيم بسيطة
            (سجلات قديمة). لا يتم تضمين سوى الحقول التي تمت مراجعتها كحقائق من
            السجل.
        registry_sources:
          type: array
          description: >-
            السجلات الرسمية التي تمت قراءة السجل منها (السجلات القديمة). لا يتم
            ذكر المصادر الأخرى بالاسم.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: الأسماء التي كانت الشركة مسجلة بها سابقاً (السجلات السابقة).
        parent_companies:
          type: array
          items:
            type: string
          description: الشركات الأم التي يسميها السجل (السجلات السابقة).
        documents_available:
          type: integer
          description: عدد الإيداعات التي يقدمها السجل للشركة (السجلات القديمة).
    KYBRegistryOwnership:
      type: object
      description: نتيجة مستوى الملكية (المساهمون / UBO)، بالهيكل نفسه لكل دولة ومصدر سجل.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` عندما ينشر السجل بيانات الملكية؛ و`not_held` عندما
            يستجيب سجل الملكية ولا يدرج الشركة على الإطلاق (راجع
            `unavailable_reason`)؛ و`unavailable` عندما لا يقدّم بيانات الملكية
            لأي سبب آخر (راجع `unavailable_reason`)؛ و`pending` بينما لا يزال
            السجل يجلبها؛ و`not_requested` للمستوى Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: المستوى الذي طلبه سير العمل.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            المستوى الذي سلّمه السجل (والذي تتم فوترته). طلب UBO الذي يُجاب عنه
            بالمساهمين المباشرين فقط يكون `shareholders`.
        unavailable_reason:
          type: string
          nullable: true
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
            - null
          description: >-
            سبب عدم تسليم مستوى الملكية المطلوب. يكون فارغاً ما لم تكن `status`
            هي `unavailable` أو `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            تكون القيمة True عندما يصل مجموع الحصص المعلنة للمساهمين المباشرين
            إلى 100% (مع فارق نقطة مئوية واحدة للتقريب)؛ وتكون False إذا لم يكن
            كذلك؛ وتكون null إذا لم يتم تقديم بيانات الملكية أو لم يتم تحديد
            الحصة.
        unresolved:
          type: array
          description: >-
            أجزاء سلسلة الملكية التي تعذر على سجل الشركات تسويتها، مثل عدم وجود
            هيكل مجموعة مسجل فوق المالكين المباشرين.
          items:
            type: object
            properties:
              reason:
                type: string
              section:
                type: string
                nullable: true
      required:
        - status
        - tier_requested
        - tier_delivered
        - unavailable_reason
        - direct_ownership_complete
        - unresolved
    KYBOwnershipStructure:
      type: object
      nullable: true
      description: >-
        جدول رأس المال الذي أثبته السجل، كما كان عند تسليم مستوى الملكية:
        `shareholders` و`beneficial_owners` المباشرون. يكون فارغاً عندما لا يثبت
        السجل أي ملكية. ولا يتضمن أبداً صفوف مصدر السجل نفسه؛ اقرأ
        `company.beneficial_owners` و`company.ownership` للاطلاع على السجل
        الحالي.
      properties:
        shareholders:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
        beneficial_owners:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
      required:
        - shareholders
        - beneficial_owners
    InvestigatorBlock:
      type: object
      nullable: true
      description: >-
        أحدث مراجعة من Investigator للعنصر، أو null في حال لم يحصل عليها من قبل.
        يتم تضمينها في قرار جلسة V3 وقرار جلسة الشركة (وبالتالي في webhook لحدث
        `status.updated`).
      properties:
        run_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - running
            - completed
            - failed
        stage:
          type: string
          enum:
            - shadow
            - live
        queue:
          type: string
          enum:
            - kyc
            - kyb
            - aml
            - transactions
            - cases
        is_open:
          type: boolean
        recommendation:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
          nullable: true
        recommendation_detail:
          type: string
          nullable: true
        confidence:
          type: string
          enum:
            - high
            - moderate
            - low
          nullable: true
        summary:
          type: string
          nullable: true
        ready_to_accept:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          nullable: true
        automated:
          type: boolean
          description: اتخذ المحقق قراره بشكل مستقل، حتى لو تم تجاوز القرار لاحقاً.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: متى يتم حذف البيانات البيومترية الحية لهذه الجلسة.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            رموز الولايات الأمريكية التي تفرض قواعدها البيومترية حداً زمنياً
            للحذف لهذا الشخص (`US` عندما تكون الولاية غير معروفة). تكون فارغة
            إذا لم ينطبق أي منها.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            تاريخ حذف البيانات البيومترية الحية (صور الوجه والقوالب) لهذه
            الجلسة، بناءً على إعداد الاحتفاظ بالبيانات الخاص بتطبيقك والحد
            القانوني للاختصاص القضائي للشخص، إن وجد. القيمة `null` عندما لا
            ينطبق أي تاريخ بعد.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: معرّف المنصة.
          example: whatsapp
        category:
          type: string
          description: >-
            فئة المنصة، مثل MESSAGING أو SOCIAL_MEDIA أو ECOMMERCE أو
            PROFESSIONAL أو EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: '`global` للمنصات العالمية، و`local` للمنصات الخاصة بمنطقة معينة.'
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: المنصات في هذه الفئة التي تم تأكيد التسجيل فيها.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: حصة المنصات المفحوصة في الفئة التي تحتوي على تسجيل، 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: اسم الملف التعريفي، إذا وفرته المنصة.
        photo:
          type: string
          nullable: true
          description: رابط الصورة الشخصية للملف التعريفي، إذا وفرته المنصة.
        about:
          type: string
          nullable: true
          description: نص النبذة التعريفية للملف التعريفي، إذا وفرته المنصة.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: مستوى رؤية الملف التعريفي، إذا وفرته المنصة.
        business_account:
          type: boolean
          nullable: true
          description: ما إذا كان الملف الشخصي حساب شركة، عندما تكشفه المنصة.
    SignatureFieldResult:
      type: object
      description: >-
        حقل في مستند موقّع، مع قيمته في نسخة هذا الموقّع. راجع
        [الحقول](/ar/core-technology/electronic-signature/report-electronic-signature#الحقول).
      properties:
        key:
          type: string
          description: مفتاح الحقل، كما هو مستخدم في `sign.field_values`.
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: >-
            رقم الصفحة، يبدأ من 1. بالنسبة لمستند Word، تكون صفحة من ملف PDF
            المُحوَّل.
        x:
          type: number
          description: الحافة اليسرى، ككسر من عرض الصفحة.
        'y':
          type: number
          description: الحافة العلوية، كنسبة من ارتفاع الصفحة.
        width:
          type: number
          description: العرض، كنسبة من عرض الصفحة.
        height:
          type: number
          description: الارتفاع، كنسبة من ارتفاع الصفحة.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            سلسلة نصية لـ `text` و `email` و `full_name` و `date_signed` و
            `data`، وقيمة منطقية لـ `checkbox`، و `true` لتوقيع أو أحرف أولى
            مُضافة. `null` عندما تكون فارغة.
        display_value:
          type: string
          nullable: true
          description: >-
            القيمة كما تم ختمها على الصفحة: التواريخ وفق `date_format` الخاص
            بالحقل، أو `Yes` أو `No` لخانات الاختيار، أو `Signed` للتوقيع أو
            الأحرف الأولى.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            مصدر القيمة: `signer` (مكتوبة، أو محددة، أو مطبقة بواسطة الموقّع)،
            أو `identity` (الهوية التي تم التحقق منها)، أو `contact` (البريد
            الإلكتروني أو الهاتف الذي تم التحقق منه)، أو `company` (الشركة التي
            تم التحقق منها)، أو `session` (`vendor_data`)، أو `metadata`، أو
            `api` (`sign.field_values`)، أو `signing_time` (تاريخ التوقيع).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            التوقيع والأحرف الأولى فقط: مسار الصورة المطبقة. راجع [تنزيل صورة
            التوقيع](/ar/sessions-api/electronic-signature/download-field-image).
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            `source_empty` عندما لا يحتوي حقل مملوء مسبقاً على أي قيمة في الجلسة
            وسمح `signature_field_data_missing_action` للموقّع بالتوقيع على أي
            حال.
    KYBRegistrySectionError:
      type: object
      description: قسم لم يُرجعه السجل.
      properties:
        status_code:
          type: integer
          nullable: true
          description: الحالة التي رد بها السجل للقسم.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: كيفية تتبع مستوى UBO لسلسلة الملكية فوق الشركة.
      properties:
        parent_chain:
          type: array
          description: >-
            الشركات الأم للشركة بدءاً من الشركة الأم النهائية ووصولاً إلى
            الشركة.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: الشركات التابعة مباشرة للشركة ضمن مجموعتها المؤسسية.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            أجزاء السلسلة التي تعذر على سجل الشركات تسويتها (نفس مدخلات
            `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  السبب، على سبيل المثال `no_group_structure_on_record` أو
                  `selected_company_not_in_group_structure` أو `section_error`.
              section:
                type: string
                nullable: true
                description: القسم المعني، على سبيل المثال `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        حقول الملف الشخصي Lite الفارغة التي ملأها مصدر آخر من مصادر سجلات
        الدولة. لا يُذكر اسم المصدر.
      properties:
        fields:
          type: array
          items:
            type: string
          description: حقول الشركة التي تمت تعبئتها.
        people_added:
          type: integer
          description: عدد المسؤولين أو المالكين الذين تمت إضافتهم.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        سجل رسمي قُرئت منه البيانات. لا يتم ذكر سوى السجلات الحكومية الرسمية
        والجهات التنظيمية ونظام المعرّفات الرسمي؛ ويتم استبعاد أي مصدر آخر.
      properties:
        name:
          type: string
          description: اسم السجل، على سبيل المثال `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: دائماً `official`.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        مالك واحد في لقطة الملكية: نفس هوية السجل والحصة كما في
        `company.beneficial_owners[]`، وحصته الأساسية `shareholding`.
      properties:
        name:
          type: string
          nullable: true
          description: اسم المالك كما هو مذكور في السجل.
        first_name:
          type: string
          nullable: true
          description: الاسم الشخصي، للشخص الطبيعي، عندما يذكره سجل الشركات.
        last_name:
          type: string
          nullable: true
          description: اسم العائلة للشخص الطبيعي، عندما يذكره السجل.
        date_of_birth:
          type: string
          nullable: true
          description: تاريخ الميلاد (ISO 8601) عندما ينشره السجل.
        country_of_birth:
          type: string
          nullable: true
          description: دولة الميلاد عندما ينشرها سجل الشركات.
        company_name:
          type: string
          nullable: true
          description: اسم الشركة، لمالك مؤسسي.
        registration_number:
          type: string
          nullable: true
          description: رقم التسجيل، للمالك الاعتباري (الشركة).
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: ما إذا كان المالك شخصاً طبيعياً أو شركة.
        nationality:
          type: string
          nullable: true
          description: الجنسية عندما يذكرها سجل الشركات.
        designation:
          type: string
          nullable: true
          description: المسمى الوظيفي أو الدور الخاص بالمالك كما هو مطبوع في السجل.
        roles:
          type: array
          items:
            type: string
          description: '`shareholder` للمساهم المباشر، و`ubo` للمستفيد الحقيقي.'
        ownership_min_shares:
          type: string
          nullable: true
          description: الحد الأدنى للحصة، كنسبة مئوية (يساوي الحد الأعلى لحصة محددة بدقة).
        ownership_max_shares:
          type: string
          nullable: true
          description: الحد الأعلى للحصة، بالنسبة المئوية.
        voting_min_shares:
          type: string
          nullable: true
          description: الحد الأدنى لحقوق التصويت، كنسبة مئوية.
        voting_max_shares:
          type: string
          nullable: true
          description: الحد الأعلى لحقوق التصويت، بالنسبة المئوية.
        appointment_date:
          type: string
          nullable: true
          description: تاريخ بدء الملكية أو التعيين (ISO 8601).
        is_active:
          type: boolean
          nullable: true
          description: القيمة False لمالك سابق.
        shareholding:
          $ref: '#/components/schemas/KYBRegistryShareholding'
      required:
        - name
        - first_name
        - last_name
        - date_of_birth
        - country_of_birth
        - company_name
        - registration_number
        - entity_type
        - nationality
        - designation
        - roles
        - ownership_min_shares
        - ownership_max_shares
        - voting_min_shares
        - voting_max_shares
        - appointment_date
        - is_active
        - shareholding
    InvestigatorDecision:
      type: object
      description: >-
        كيفية خروج العنصر من قائمة انتظار Investigator. يتم إرجاع `decided_by`
        و`original_outcome` و`overrides` بواسطة endpoint الخاصة بالقبول والتجاوز
        والتقرير؛ وتحتوي كتلة `investigator` الخاصة بقرار الجلسة على الحقول
        الأخرى.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            اعتمدت `accepted` أو `edited` التوصية (`edited` مع سرد معاد كتابته)،
            واتخذت `overridden` إجراءً آخر، و`decided_elsewhere` هو قرار تم
            اتخاذه خارج Investigator أثناء فتح التقرير، و`automated` هو قرار
            اتخذه Investigator تلقائيًا بمفرده.
        action:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
        actor_email:
          type: string
          nullable: true
        actor_name:
          type: string
          nullable: true
        override_category:
          type: string
          enum:
            - missing_context
            - needs_information
            - policy_differs
            - evidence_misread
            - other
            - ''
          nullable: true
        override_reason:
          type: string
          nullable: true
        final_status:
          type: string
          description: حالة العنصر بعد اتخاذ القرار.
        agreed:
          type: boolean
          description: ما إذا كان القرار متطابقاً مع التوصية.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: فُرضت رسوم على المراجعة.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: >-
            القرار الذي اتخذه المحقّق بمفرده، دون تغيير عبر التجاوزات اللاحقة.
            وتكون القيمة Null للقرار الذي اتخذه الفريق.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: كل تجاوز لقرار اتخذه Investigator من تلقاء نفسه، الأقدم أولاً.
          items:
            type: object
            properties:
              action:
                type: string
              actor_email:
                type: string
                nullable: true
              actor_name:
                type: string
                nullable: true
              override_category:
                type: string
              override_reason:
                type: string
              previous_status:
                type: string
              final_status:
                type: string
              agreed:
                type: boolean
                nullable: true
              overridden_at:
                type: string
                format: date-time
    KYBRegistryGroupCompany:
      type: object
      description: شركة ضمن مجموعة الشركات، وفقاً لهويتها في السجل.
      properties:
        name:
          type: string
          nullable: true
          description: اسم الشركة.
        country_code:
          type: string
          nullable: true
          description: دولة التسجيل.
        registration_number:
          type: string
          nullable: true
          description: رقم التسجيل.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.