> ## 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.

# واجهة برمجة تطبيقات فحص الاحتيال

> خطّط لفحوصات الهوية ومخاطر جهات الاتصال والإثراء والشبكة المختارة وشغّلها في طلب واحد عبر Didit.

أرسل المعرّفات المكتوبة وسمات الهوية المُدّعاة، واختر الفحوص التي تريد تشغيلها، وافحص نتيجة كل فحص على حدة.
استخدم [تخطيط فحص الاحتيال](https://docs.didit.me/ar/standalone-apis/fraud-check-plan.md) أولاً للتحقق من متطلبات الإدخال والرسوم المقدّرة.

## اختيار الملف الشخصي

ثبّت `profile_version` حتى تكون القيم الافتراضية المختارة وسياسة القرار واضحةً صراحةً.
الملف الشخصي الافتراضي هو `standard`، بالإصدار `2026-08-27`.
يضيف الإصدار `2026-09-14` الإثراء الاجتماعي الاختياري للبريد الإلكتروني ورقم الهاتف، ويسجّل كل فحص مكتمل كجلسة أصلية للتحقق من المستخدمين.
وفي هذا الإصدار، الإضافات المدفوعة اختيارية ولا تُفعَّل إلا صراحةً.
ويفعّل الإصدار `2026-09-14.1` أيضاً عمليات البحث عن معرّفات الشبكة العالمية لمكافحة الاحتيال للمؤسسات على خطة Enterprise التي تشارك بياناتها عالمياً.
ويضيف الإصدار `2026-09-14.2` فحصاً اختيارياً لمطابقة صورة السيلفي مع رقم CPF في البرازيل.
وتحتفظ الإصدارات السابقة بسلوكها الأصلي.

تدعم الملفات الشخصية الحالية تقييم مخاطر البريد الإلكتروني ورقم الهاتف وعنوان IP، والتحقق من قواعد البيانات حيثما كان مؤهلاً، وسجلّ الشبكة الخاصة بتطبيقك.
يتطلب ربط الهوية القائم على السيلفي الإصدار `2026-09-14.2`.
ويؤدي اختيارها في الإصدارات السابقة إلى إرجاع `not_available_in_profile_version`.

## الهوية المُدّعاة والسياق

ضع البريد الإلكتروني ورقم الهاتف والمعرّفات الحكومية في `subject.identifiers`.
تتطلب المعرّفات الحكومية تحديد دولة الإصدار، وقد يلزم تحديد الجهة المُصدِرة أيضاً في الحالات التي تكون فيها الأرقام فريدةً ضمن منطقة معيّنة فقط.
ضع الأسماء وتاريخ الميلاد والجنسية والعنوان في `subject.attributes`.
هذه ادعاءات تُقارَن عندما يدعمها المصدر المختار، وليست حقائق موثّقة لمجرد أنها قُدّمت.

استخدم `context` لعنوان IP الخاص بالمحاولة ووكيل المستخدم والغرض والدولة وأي إقرار موافقة مطلوب.
يفصل ذلك بين المعلومات المتعلقة بمحاولة التحقق والمعلومات المتعلقة بالشخص.
بالنسبة إلى الفحوص البيومترية المدعومة، أرسل `subject.selfie` كصورة JPEG أو PNG أو WebP مرمّزةً بصيغة base64، بحجم أقصاه 6 ميغابايت.
كما يُقبل رابط البيانات (data URI) للصورة نفسها.
لا ترسل صورة مرجعية أو رابط URL بعيداً أو مفتاح تخزين.

## السيلفي والمعرّف المُدّعى

اختر `biometric_identity`، وأرسل معرّف `tax_number` برازيلياً وصورة السيلفي، وتأكد من `context.consent_obtained`.
يتحقق المرجع من أن صورة السيلفي تعود إلى صاحب رقم CPF المُدّعى.
يُرجع غياب الموافقة `consent_required`، ويُرجع البلد غير المدعوم `unsupported_region`.
للوحدة سعر لكل فحص، ويعتمد هذا السعر على معدل التحقق من قواعد البيانات الخاص بمؤسستك، فراجع الخطة قبل التشغيل.

عندما يقدّم المرجع إجابته، تكون قيمة `identity_relationship.result` إما `match` أو `mismatch` أو `inconclusive`.
تتطلب الإجابة غير الحاسمة مراجعةً، ولا تُعامَل أبداً كعدم تطابق.
لا تُثبت النتيجة إلا العلاقة بين صورة السيلفي ورقم CPF.
ولا تتحقق من اسم أو تاريخ ميلاد مُقدَّم، ولا تثبت الحيوية، ولا تبحث عن الوجه عبر الإنترنت أو الشبكة العالمية لمكافحة الاحتيال.
تبقى الأسماء وتاريخ الميلاد ادعاءات ما لم يوفّر مصدر آخر مختار أدلةً على هذه الحقول.
تُعدّ مهلات الانتظار وأخطاء المصدر نتائج غير متاحة، ولا تُفوتَر.
تُفوتَر الإجابات غير الحاسمة المكتملة بالسعر نفسه لفحص المرجع.
لا يُدرج هذا الفحص صورة السيلفي في النتيجة، ولا يخزّنها كوسائط للجلسة.

## اختيار الفحوص

تحدد `checks.include` الوحدات، وتتقدّم `checks.exclude` عليها.
تعطّل قائمة `include` الفارغة المحددة صراحةً جميع الأعمال الاختيارية، ومع ذلك تستمر عملية التطبيع.
عند حذف `include` تُستخدم القيم الافتراضية للملف الشخصي المثبّت.
يُختار الإثراء الاجتماعي للبريد الإلكتروني ورقم الهاتف بشكل منفصل باستخدام `email_social` و`phone_social`.
وهما يتطلبان معرّفاً صالحاً ومطابقاً، ولا يرسلان رمز OTP.

```json theme={null}
{
  "profile_version": "2026-09-14.1",
  "client_reference": "review-attempt-001",
  "subject": {
    "identifiers": [
      { "type": "email", "value": "applicant@example.com" }
    ],
    "attributes": { "first_name": "Alex", "last_name": "Example" }
  },
  "checks": { "include": ["networks_same_org", "networks_cross_org", "email_risk"] }
}
```

## قراءة النتائج دون الخلط بينها

تُبلغ كل وحدة عن حالة تنفيذها وسببها ووحداتها القابلة للفوترة.
تصف `not_requested` و`excluded_by_caller` و`missing_required_input` و`source_unavailable` نتائج مختلفة.
المصدر المفقود ليس عدم تطابق في الهوية، ولا نتيجة بمخاطر صفرية.

يصف `attribute_evidence` الأدلة على مستوى الحقول، بينما يُبقي `risk` أبعاد الهوية والتواصل والجهاز والسلوك والشبكة الاحتيالية منفصلةً.
البريد الإلكتروني أو الجهاز أو المعرّف الآخر المشترك هو صلة مرصودة، وليس دليلاً على أن حسابين يعودان إلى الشخص نفسه أو على أن احتيالاً قد ارتُكب.
`recommendation` هي توصية الفحص نفسه، ولا تغيّر حالة سجل آخر.
تظهر نتائج الإثراء الاجتماعي ضمن `enrichment`، مع تمييز النتائج غير المتاحة عن النتائج المكتملة.

## الشبكة العالمية لمكافحة الاحتيال

اختر `networks_cross_org` للاستعلام عن معرّفات البريد الإلكتروني والهاتف المدعومة، ومعرّفات المستندات المحددة بمساحة أسماء صحيحة، في الشبكة المشتركة.
يتطلب الاستعلام خطة Enterprise وضبط وضع المشاركة في مؤسستك على `global`.
بدونهما، تُبلغ الخطة عن الوحدة بقيمة `available: false` و`availability_reason: "entitlement_required"`، ويتخطاها الفحص الذي يختارها مع الحالة `skipped` والسبب `entitlement_required`.
ينطبق السبب نفسه عندما لا تكون الشبكات مفعّلة لمؤسستك.
لا تخضع تطبيقات البيئة التجريبية للخطة ولا لوضع المشاركة: مع معرّف مدعوم، تُشغَّل الوحدة وتعيد نتيجة عينة فارغة.
يستهلك الاستعلام ميزانية القراءة الحالية لمؤسستك ويسجّل تدقيقًا لعملية القراءة.
لا تُفرض عليه رسوم لكل استعلام.
تخطيط الفحص لا يستعلم عن الفهرس المشترك ولا يستهلك ميزانية القراءة الخاصة به.

يتضمن `network.cross_organization` الحقل `signals_checked` والحقل `insights` المجمّعة المُفصَح عنها عند اكتمال الفحص.
تتضمن كل رؤية نوع الإشارة وفئات النتائج وعدد المساهمين وفئة الحداثة، كما تتضمن فئات الصناعة فقط عند تفعيل الإفصاح.
لا تحدد هذه البيانات أبدًا أي مؤسسة أخرى أو حسابًا أو شخصًا أو عملية تحقق.
تُستبعد النتائج الواقعة دون حد الإفصاح، وقائمة فارغة لا تثبت غياب سجل الاحتيال.
تُطلق الإشارة المشتركة المُفصَح عنها توصية بالمراجعة، ولا تُفضي أبداً إلى رفض تلقائي أو تطابق للهوية.

يُبلغ الاستعلام غير المتاح عن سببه بشكل منفصل عن استعلام مكتمل وفارغ.
إذا فقدت مؤسستك لاحقاً الوصول عبر المؤسسات، مثلاً بعد تغيير الخطة أو عندما لم يعد وضع المشاركة `global`، فإن استرجاع النتائج وإعادة المحاولات وتفاصيل الجلسات تُخفي التجميعات المشتركة وأدلة المخاطر المشتقة منها.
تبقى التوصية الأصلية قراراً تاريخياً، ولا تغيّر عمليات القراءة حالة التحقق.

## الجلسات وإعادة المحاولات والرسوم

يسترجع `check_id` النتيجة المخزّنة عبر [الحصول على فحص احتيال](https://docs.didit.me/ar/standalone-apis/fraud-check-result.md).
عند وجوده، يحدد `request_id` جلسة التحقق الأصلية الخاصة به.
تُنشئ الإصدارات `2026-09-14` و`2026-09-14.1` و`2026-09-14.2` تلك الجلسة دائماً، بما في ذلك عندما يُختار سجل الشبكة الخاصة وحده.

إعادة استخدام `client_reference` مع محتوى الطلب نفسه تُعيد النتيجة الأصلية دون تنفيذ آخر أو رسوم أخرى ما دام ذلك الفحص موجوداً.
محتوى طلب مختلف مع المرجع نفسه يُعيد `409`.
إذا كان التنفيذ ما زال جارياً، أعد إرسال الطلب نفسه بعد الفاصل الزمني المحدد في الرأس `Retry-After` للاستجابة.
حذف عملية التحقق المرتبطة يحذف نتيجة فحص الاحتيال أيضاً، ويُعيد الاسترجاع بعد ذلك `404`.
لا يمكن لفحص حُذف أثناء التنفيذ أن ينشر نتيجة مكتملة.

تُحتسب الأسعار من أسعار مؤسستك الحالية المدفوعة مسبقاً أو المتعاقد عليها.
لا تُفرض رسوم على الوحدات غير المتاحة أو المتخطاة، ولا يُفرض على سجل الشبكة الخاصة رسم لكل فحص.
تستخدم فحوصات البيئة التجريبية استجابات عينة دون استدعاءات مدفوعة لمزوّدي الخدمة أو رسوم.


## OpenAPI

````yaml ar/openapi-25.json POST /v3/fraud/checks/
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/fraud/checks/:
    post:
      tags:
        - Fraud Check
      summary: إجراء فحص احتيال
      description: >-
        إرسال معرّف أو أكثر محدد النوع وتلقي تطبيع البيانات، وإثراء حديث، وتحقق
        رسمي موثوق حيثما تكون الدولة ونوع المعرّف مشمولين، وأبعاد مخاطر مستقلة
        وتوصية في استجابة واحدة.


        تدعم هذه الملفات التعريفية عمليات التحقق من المعرّفات. يتطلب ربط الهوية
        المستند إلى صورة سيلفي (`biometric_identity`) إصدار الملف التعريفي
        `2026-09-14.2` ورقم CPF برازيلي؛ ويتم تشغيله فقط بموافقة المستخدم وعندما
        تكون مؤسستك مخولة بذلك. تُبلغ الإصدارات السابقة عنه كـ
        `not_available_in_profile_version`. يتم الإبلاغ عن الوحدات التي لا يمكن
        تشغيلها كـ skipped (تم تخطيها) مع سبب حتمي؛ ولا يتم أبداً الإبلاغ عن
        مصدر تعذر عليه الرد كعدم تطابق في الهوية.
      operationId: create_fraud_check
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
            example:
              client_reference: review-attempt-001
              subject:
                identifiers:
                  - type: email
                    value: applicant@example.com
                attributes:
                  first_name: Alex
                  last_name: Example
              checks:
                include:
                  - networks_same_org
                  - networks_cross_org
                  - email_risk
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCheckResponse'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudClientCredentialsErrorMessage'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/FraudClientCredentialsForbiddenErrorMessage
          description: ''
        '409':
          description: >-
            تعارض، يُرجع دون احتساب رسوم: تم استخدام `client_reference` بالفعل
            مع نص طلب مختلف؛ أو أن هناك فحصاً يحمل نفس `client_reference` لا
            يزال قيد التشغيل (أعد المحاولة بعد ثوانٍ محددة في `Retry-After`
            باستخدام نفس المرجع)؛ أو تم حذف عملية التحقق التي يسجل فيها هذا
            الفحص قبل اكتماله.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              examples:
                different_body:
                  summary: تمت إعادة استخدام المرجع مع نص طلب مختلف
                  value:
                    error: >-
                      client_reference has already been used with a different
                      request body.
                still_running:
                  summary: عملية فحص بهذا المرجع لا تزال قيد التشغيل
                  value:
                    error: >-
                      A check with this client_reference is already running.
                      Retry with the same reference later.
                verification_deleted:
                  summary: تم حذف عملية التحقق قبل اكتمال الفحص
                  value:
                    error: This verification was deleted before the check completed.
          headers:
            Retry-After:
              description: >-
                عدد الثواني التي يجب انتظارها قبل إعادة المحاولة، ويتم إرسالها
                عندما يكون فحص يحمل نفس `client_reference` لا يزال قيد التشغيل.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.fraud_checks.create(
                client_reference="review-attempt-001",
                subject={
                    "identifiers": [{
                        "type": "email",
                        "value": "applicant@example.com",
                    }],
                    "attributes": {
                        "first_name": "Alex",
                        "last_name": "Example",
                    },
                },
                checks={
                    "include": ["networks_same_org", "networks_cross_org", "email_risk"],
                },
            )
            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.fraudChecks.create({
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Create(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.FraudCheckAttributesRequest;

            import me.didit.types.FraudCheckIdentifierRequest;

            import me.didit.types.FraudCheckModuleSelectionRequest;

            import me.didit.types.FraudCheckRequestRequest;

            import me.didit.types.FraudCheckSubjectRequest;

            import me.didit.types.FraudExcludeEnum;

            import me.didit.types.FraudTypeEnum;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.fraudChecks().create(FraudCheckRequestRequest.builder()
                    .clientReference("review-attempt-001")
                    .subject(FraudCheckSubjectRequest.builder()
                            .identifiers(List.of(FraudCheckIdentifierRequest.builder()
                                    .type(FraudTypeEnum.of("email"))
                                    .value("applicant@example.com")
                                    .build()))
                            .attributes(FraudCheckAttributesRequest.builder()
                                    .firstName("Alex")
                                    .lastName("Example")
                                    .build())
                            .build())
                    .checks(FraudCheckModuleSelectionRequest.builder()
                            .include(List.of(FraudExcludeEnum.of("networks_same_org"), FraudExcludeEnum.of("networks_cross_org"), FraudExcludeEnum.of("email_risk")))
                            .build())
                    .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->fraudChecks->create([
                'client_reference' => 'review-attempt-001',
                'subject' => [
                    'identifiers' => [[
                        'type' => 'email',
                        'value' => 'applicant@example.com',
                    ]],
                    'attributes' => [
                        'first_name' => 'Alex',
                        'last_name' => 'Example',
                    ],
                ],
                'checks' => [
                    'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.fraud_checks.create(
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              }
            )
            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.FraudChecks.CreateAsync(new
            FraudCheckRequestRequest

            {
                ClientReference = "review-attempt-001",
                Subject = new()
                {
                    Identifiers = new FraudCheckIdentifierRequest[]
                    {
                        new()
                        {
                            Type = "email",
                            Value = "applicant@example.com",
                        },
                    },
                    Attributes = new FraudCheckAttributesRequest
                    {
                        FirstName = "Alex",
                        LastName = "Example",
                    },
                },
                Checks = new FraudCheckModuleSelectionRequest
                {
                    Include = new FraudExcludeEnum[] { "networks_same_org", "networks_cross_org", "email_risk" },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FraudCheckRequestRequest:
      type: object
      properties:
        client_reference:
          type: string
          minLength: 1
          description: >-
            المرجع الخاص بك لعملية الفحص هذه. يعمل أيضاً كمفتاح idempotency:
            إعادة استخدامه مع نفس الطلب يعيد الفحص الأصلي دون تشغيل الوحدات أو
            فوترتها مرة أخرى؛ وإعادة استخدامه مع طلب مختلف يعيد 409.
          maxLength: 255
        profile:
          type: string
          minLength: 1
          default: standard
          description: معرّف ملف التنسيق. يتم تعيينه افتراضياً على ملف Didit `standard`.
          maxLength: 64
        profile_version:
          type: string
          minLength: 1
          description: >-
            تثبيت نسخة مجمدة من الملف التعريفي. القيمة الافتراضية هي النسخة
            الحالية للملف التعريفي.
          maxLength: 32
        subject:
          $ref: '#/components/schemas/FraudCheckSubjectRequest'
        context:
          $ref: '#/components/schemas/FraudCheckContextRequest'
        checks:
          $ref: '#/components/schemas/FraudCheckModuleSelectionRequest'
        vendor_data:
          type: string
          maxLength: 1000
        metadata: {}
      required:
        - subject
    FraudCheckResponse:
      type: object
      properties:
        check_id:
          type: string
          format: uuid
        request_id:
          type: string
          format: uuid
          description: جلسة تحقق أصلية تم إنشاؤها لهذا الفحص.
        client_reference:
          type: string
          nullable: true
        processing_status:
          $ref: '#/components/schemas/FraudProcessingStatusEnum'
        profile_id:
          type: string
        profile_version:
          type: string
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckInput'
        modules:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckModuleReport'
        attribute_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        compound_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        risk:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckRisk'
        network:
          type: object
          additionalProperties: {}
        enrichment:
          type: object
          additionalProperties: {}
        identity_relationship:
          allOf:
            - $ref: '#/components/schemas/FraudCheckIdentityRelationship'
          nullable: true
        recommendation:
          $ref: '#/components/schemas/FraudRecommendationEnum'
        next_action:
          $ref: '#/components/schemas/FraudNextActionEnum'
        decision_reasons:
          type: array
          items:
            type: string
        coverage:
          type: object
          additionalProperties: {}
        usage:
          type: array
          items:
            type: object
            additionalProperties: {}
        vendor_data:
          type: string
          nullable: true
        metadata:
          nullable: true
      required:
        - attribute_evidence
        - check_id
        - client_reference
        - completed_at
        - compound_evidence
        - coverage
        - created_at
        - decision_reasons
        - inputs
        - modules
        - network
        - next_action
        - processing_status
        - profile_id
        - profile_version
        - recommendation
        - risk
        - usage
    FraudClientCredentialsErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: 'Authentication failed: Invalid client access token.'
    FraudClientCredentialsForbiddenErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: Forbidden - User doesn't have permission
    FraudCheckSubjectRequest:
      type: object
      properties:
        selfie:
          type: string
          minLength: 1
          description: >-
            صورة سيلفي بتنسيق JPEG أو PNG أو WebP بترميز Base64، حتى 6 MB. بدون
            صورة مرجعية أو عنوان URL.
          maxLength: 8388672
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckIdentifierRequest'
          description: معرّف واحد أو أكثر بنوع محدد. معرّف واحد يكفي.
          maxItems: 10
          minItems: 1
        attributes:
          $ref: '#/components/schemas/FraudCheckAttributesRequest'
      required:
        - identifiers
    FraudCheckContextRequest:
      type: object
      properties:
        ip_address:
          type: string
          minLength: 1
        user_agent:
          type: string
          maxLength: 512
        country:
          type: string
          description: >-
            الدولة التي يدّعي الشخص وجوده فيها. للسياق فقط - لا تعد أبدًا دليلاً
            على إثبات ملكية الهوية.
          maxLength: 3
        purpose:
          type: string
          maxLength: 128
        consent_obtained:
          type: boolean
    FraudCheckModuleSelectionRequest:
      type: object
      properties:
        include:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
        exclude:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
    FraudProcessingStatusEnum:
      enum:
        - pending
        - running
        - completed
        - failed
      type: string
      description: |-
        * `pending` - معلق
        * `running` - قيد التشغيل
        * `completed` - مكتمل
        * `failed` - فشل
    FraudCheckInput:
      type: object
      properties:
        reference:
          type: string
          description: مُعرّف مُنقّح للمُعرّف المُرسل.
        type:
          $ref: '#/components/schemas/FraudTypeEnum'
        namespace:
          type: object
          additionalProperties: {}
        quality:
          type: string
        normalization:
          type: object
          additionalProperties: {}
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
      required:
        - availability
        - namespace
        - normalization
        - quality
        - reference
        - type
    FraudCheckModuleReport:
      type: object
      properties:
        module:
          $ref: '#/components/schemas/FraudExcludeEnum'
        status:
          $ref: '#/components/schemas/FraudStatusEnum'
        reason:
          type: string
          nullable: true
        latency_ms:
          type: integer
        freshness:
          type: string
          nullable: true
        billable_units:
          type: integer
      required:
        - billable_units
        - freshness
        - latency_ms
        - module
        - reason
        - status
    FraudCheckRisk:
      type: object
      properties:
        dimension:
          $ref: '#/components/schemas/FraudDimensionEnum'
        score:
          type: integer
          nullable: true
        band:
          $ref: '#/components/schemas/FraudBandEnum'
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        requested_but_unavailable:
          type: boolean
          description: >-
            تكون القيمة True عندما يقدّم الطلب كل ما يحتاجه هذا البُعد ولكن
            المنصة لم تتمكن رغم ذلك من الاستجابة له. لا يُوصى أبداً بالموافقة
            على مثل هذا الفحص بالاعتماد فقط على الأبعاد التي تمت الاستجابة لها.
        reason_codes:
          type: array
          items:
            type: string
        evidence_indexes:
          type: array
          items:
            type: integer
      required:
        - availability
        - band
        - dimension
        - evidence_indexes
        - reason_codes
        - requested_but_unavailable
        - score
    FraudCheckIdentityRelationship:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/FraudResultEnum'
        reference_type:
          type: string
        country:
          type: string
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        reason_codes:
          type: array
          items:
            type: string
      required:
        - availability
        - country
        - reason_codes
        - reference_type
        - result
    FraudRecommendationEnum:
      enum:
        - approve
        - review
        - reject
      type: string
      description: |-
        * `approve` - موافقة
        * `review` - مراجعة
        * `reject` - رفض
    FraudNextActionEnum:
      enum:
        - none
        - manual_review
        - step_up
        - resubmit_capture
      type: string
      description: |-
        * `none` - لا شيء
        * `manual_review` - مراجعة يدوية
        * `step_up` - تصعيد
        * `resubmit_capture` - إعادة إرسال الالتقاط
    FraudCheckIdentifierRequest:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/FraudTypeEnum'
          description: |-
            نوع المعرّف. يحدد حقول مساحة الاسم المطلوبة.

            * `email` - البريد الإلكتروني
            * `phone` - الهاتف
            * `national_id` - الهوية الوطنية
            * `tax_number` - الرقم الضريبي
            * `passport_number` - رقم جواز السفر
            * `driving_licence_number` - رقم رخصة القيادة
            * `residence_permit_number` - رقم تصريح الإقامة
            * `voter_id` - معرّف الناخب
            * `external_id` - المعرّف الخارجي
        value:
          type: string
          minLength: 1
          description: قيمة المعرّف، بأي تنسيق معتاد.
          maxLength: 255
        country:
          type: string
          description: >-
            دولة الإصدار بتنسيق ISO-3166 alpha-2 أو alpha-3. مطلوب لأنواع
            المعرّفات الحكومية: تشير الأرقام المتطابقة إلى أشخاص مختلفين في
            بلدان مختلفة.
          maxLength: 3
        issuer:
          type: string
          description: >-
            جهة إصدار اختيارية أو جهة إصدار دون وطنية، عندما لا تكون الدولة
            وحدها مميزة بشكل فريد.
          maxLength: 128
      required:
        - type
        - value
    FraudCheckAttributesRequest:
      type: object
      description: سمات مؤيدة. جميعها اختيارية؛ وهي تزيد من نطاق تغطية الوحدة.
      properties:
        first_name:
          type: string
          maxLength: 128
        last_name:
          type: string
          maxLength: 128
        full_name:
          type: string
          maxLength: 256
        date_of_birth:
          type: string
          format: date
        nationality:
          type: string
          maxLength: 3
        gender:
          type: string
          maxLength: 16
        address:
          type: string
          maxLength: 512
        city:
          type: string
          maxLength: 128
        state:
          type: string
          maxLength: 128
        postal_code:
          type: string
          maxLength: 32
    FraudExcludeEnum:
      enum:
        - normalization
        - email_risk
        - email_social
        - phone_social
        - phone_risk
        - ip_risk
        - database_validation
        - networks_same_org
        - networks_cross_org
        - biometric_identity
      type: string
      description: |-
        * `normalization` - التطبيع
        * `email_risk` - مخاطر البريد الإلكتروني
        * `email_social` - الحسابات الاجتماعية للبريد الإلكتروني
        * `phone_social` - الحسابات الاجتماعية لرقم الهاتف
        * `phone_risk` - مخاطر رقم الهاتف
        * `ip_risk` - مخاطر عنوان IP
        * `database_validation` - التحقق من قواعد البيانات
        * `networks_same_org` - شبكات المؤسسة نفسها
        * `networks_cross_org` - شبكات عبر المؤسسات
        * `biometric_identity` - الهوية البيومترية
    FraudTypeEnum:
      enum:
        - email
        - phone
        - national_id
        - tax_number
        - passport_number
        - driving_licence_number
        - residence_permit_number
        - voter_id
        - external_id
      type: string
      description: |-
        * `email` - البريد الإلكتروني
        * `phone` - الهاتف
        * `national_id` - الهوية الوطنية
        * `tax_number` - الرقم الضريبي
        * `passport_number` - رقم جواز السفر
        * `driving_licence_number` - رقم رخصة القيادة
        * `residence_permit_number` - رقم تصريح الإقامة
        * `voter_id` - معرّف الناخب
        * `external_id` - المعرّف الخارجي
    FraudAvailabilityEnum:
      enum:
        - available
        - not_requested
        - no_reference
        - insufficient_history
        - unsupported_region
        - source_unavailable
      type: string
      description: |-
        * `available` - متاح
        * `not_requested` - لم يُطلب
        * `no_reference` - لا يوجد مرجع
        * `insufficient_history` - سجل غير كافٍ
        * `unsupported_region` - منطقة غير مدعومة
        * `source_unavailable` - المصدر غير متاح
    FraudStatusEnum:
      enum:
        - planned
        - completed
        - skipped
        - failed
      type: string
      description: |-
        * `planned` - مخطط لها
        * `completed` - مكتملة
        * `skipped` - تم تخطيها
        * `failed` - فشلت
    FraudDimensionEnum:
      enum:
        - identity
        - contact
        - device_network
        - behavioral
        - fraud_network
      type: string
      description: |-
        * `identity` - الهوية
        * `contact` - جهة الاتصال
        * `device_network` - شبكة الجهاز
        * `behavioral` - السلوك
        * `fraud_network` - شبكة الاحتيال
    FraudBandEnum:
      enum:
        - low
        - medium
        - high
        - unknown
      type: string
      description: |-
        * `low` - منخفض
        * `medium` - متوسط
        * `high` - مرتفع
        * `unknown` - غير معروف
    FraudResultEnum:
      enum:
        - match
        - mismatch
        - inconclusive
        - no_reference
      type: string
      description: |-
        * `match` - مطابقة
        * `mismatch` - عدم تطابق
        * `inconclusive` - غير حاسم
        * `no_reference` - لا يوجد مرجع
  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.
    BearerAuth:
      type: http
      scheme: bearer
      description: token الوصول الخاص باعتماد العميل للتطبيق.

````

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