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

# تقرير التحقق من قواعد البيانات: استجابة JSON

> تحليل استجابات التحقق من قواعد البيانات من Didit: نتائج التطابق، بيانات السجل، درجات مطابقة الوجه، والتحذيرات. الدفع لكل استدعاء يبدأ من $0.05.

تُقارن ميزة [التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/overview.md) من Didit بيانات هوية كل مستخدم بالمصدر المعتمد في تلك الدولة — مثل RENAPER (الأرجنتين)، وReceita Federal (البرازيل)، وTribunal Electoral (بنما، مع مطابقة بيومترية للوجه)، وJunta Central Electoral (جمهورية الدومينيكان)، والمزيد — وتتم الفوترة لكل استعلام ناجح دون حد أدنى شهري.

يمثل كل إدخال في `database_validations[]` تقريرًا كاملاً للتحقق من قواعد البيانات — تشغيل واحد لعقدة التحقق من قواعد البيانات مقابل دولة إصدار واحدة. وتوجد نتائج السجل الخاصة بكل خدمة داخل المصفوفة الفرعية `validations[]` التابعة لذلك الإدخال. توثق هذه الصفحة هيكل JSON حتى تتمكن من تحليل نتائج التطابق، والبيانات المصدرية من السجل، والدرجات البيومترية التي تُرجعها كل خدمة.

![تقرير Didit للتحقق من قواعد البيانات يوضح أنواع التطابق وحقول استجابة السجل](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/database-validation-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=56284966659e33d1c74385647537e5d9)

## نظرة عامة

يتم إنشاء تقرير التحقق من قواعد البيانات في كل مرة تُشغّل فيها عقدة في سير العمل ميزة التحقق من قواعد البيانات. يمثل كل إدخال في مصفوفة `database_validations[]` **تشغيل عقدة واحد** مقابل **دولة إصدار واحدة**؛ وإذا قامت العقدة بتشغيل خدمات متعددة لتلك الدولة (على سبيل المثال CPF + CNH في البرازيل)، فستظهر كل خدمة كعنصر منفصل داخل المصفوفة الفرعية `validations[]` التابعة لهذا الإدخال. يحتوي كل تقرير على:

* `status` العام للميزة — قيمة [`FeatureStatusChoices`](https://docs.didit.me/ar/reference/data-models#مرجع-قيم-الحالة) (`Not Finished` أو `Approved` أو `Declined` أو `In Review`).
* نوع التطابق التراكمي `match_type` (`full_match` أو `partial_match` أو `no_match`، أو `null` عندما لا تُرجع أي خدمة نتيجة قابلة للاستخدام) مجمّع عبر الخدمات من خلال [طريقة التطابق](https://docs.didit.me/ar/core-technology/database-validation/database-validation-matching-methods.md).
* `issuing_state` (وفق معيار ISO 3166-1 alpha-3) و`validation_type` المشتق (`one_by_one` أو `two_by_two` أو `not_enabled` — ولا يكون `null` أبدًا).
* كتلة `screened_data` — البيانات المقدمة من المستخدم التي تم إرسالها إلى السجل.
* مصفوفة `validations[]` — إدخال واحد لكل خدمة أنتجت نتيجة، مع `service_id`/`service_name` من الدليل، و`outcome_code` المحايد عن المورّدين، و`outcome_detail` اختياري، وخريطة `validation` لكل حقل، و`source_data` المُنقّحة والمستخرجة من استجابة السجل.
* مصفوفة `errors[]` — أخطاء خاصة بكل خدمة عند فشل البحث أو تخطيه؛ ويكون هذا المفتاح **محذوفًا تمامًا** في حال عدم وجود أخطاء.
* مصفوفة `warnings[]` — أحداث المخاطر الصادرة أثناء التحقق (راجع [تحذيرات التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md)).
* حقل `node_id` يحدد عقدة مخطط سير العمل التي أنتجت التقرير (جلسات V3 فقط).

## أين يظهر في استجابات API

يظهر التقرير كـ **`database_validations[]`** في `GET /v3/session/{sessionId}/decision/` — دائمًا كمصفوفة JSON، وليس ككائن مفرد مطلقًا. تحتوي المصفوفة على إدخال واحد لكل عقدة تحقق من قواعد البيانات في مخطط سير العمل؛ وبدورها، تحتوي المصفوفة الفرعية `validations[]` لكل إدخال على عنصر واحد لكل خدمة سجل أنتجت نتيجة.

```json theme={null}
{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "status": "Approved",
  "database_validations": [
    { "node_id": "feature_db_validation_1", "status": "Approved", "...": "..." }
  ]
}
```

تشير القيمة `null` إلى أنه لم يتم تشغيل أي خطوة تحقق من قواعد البيانات بعد.

## المخطط

يوجد المخطط المعتمد لكل حقل على حدة في صفحة [نماذج البيانات](https://docs.didit.me/ar/reference/data-models.md#التحقق-من-قواعد-البيانات). ويتم إنشاؤه بواسطة `DatabaseValidationV3Serializer`.

```typescript theme={null}
interface DatabaseValidation {
  node_id: string | null;
  status: "Not Finished" | "Approved" | "Declined" | "In Review"; // FeatureStatusChoices
  issuing_state: string | null;      // ISO 3166-1 alpha-3, e.g. "ARG"
  validation_type: "one_by_one" | "two_by_two" | "not_enabled"; // derived, never null
  match_type: "full_match" | "partial_match" | "no_match" | null; // null when no service returned a usable result
  screened_data: {                   // What we sent to the registry (varies by country/service)
    tax_number?: string;
    personal_number?: string;
    document_number?: string;
    first_name?: string;
    last_name?: string;
    date_of_birth?: string;          // YYYY-MM-DD
    selfie?: string;                 // Presigned URL (biometric services)
    cnh_qr_code_image?: string;      // Presigned URL (Brazil CNH QR + face match)
    document_image?: string;         // Presigned URL (services that take a document image)
    gender?: string;                 // Biometric registry services (e.g. Argentina RENAPER)
  };
  validations: Array<{
    // Catalog metadata
    service_id?: string;             // e.g. "arg_renaper"
    service_name?: string;           // e.g. "Argentina - DNI verification (RENAPER)"
    // Per-field match outcome — keys vary by service
    // (full_name, first_name, last_name, date_of_birth, identification_number, address, …)
    validation?: Record<string, "full_match" | "partial_match" | "no_match">;
    outcome_code?: string;           // Vendor-neutral outcome, see below
    outcome_detail?: string;         // Raw upstream status detail backing the outcome code
    source_data?: {                  // Cleaned registry record
      identification_number?: string;
      first_name?: string;
      last_name?: string;
      full_name?: string;
      date_of_birth?: string;
      place_of_birth?: string;
      gender?: string;
      nationality?: string;
      issue_date?: string;
      expiration_date?: string;
      photo?: string;                // Pre-signed JPEG URL
      signature?: string;            // Pre-signed JPEG URL
      face_match_score?: number;     // Biometric services only (0-100)
    };
  }>;
  errors?: Array<{                   // Omitted entirely when empty
    service_id: string;
    code?: string;                   // e.g. "invalid_screened_data", "empty_provider_response"
    message?: string;
    missing_required_fields?: string[];
    invalid_format_fields?: string[];
    field_reasons?: Record<string, string>;
  }>;
  warnings: Warning[];               // See /reference/data-models#warning-object
}
```

### قيم الحالة

تستخدم `status` التعداد القياسي على مستوى الميزة (راجع [تعدادات الحالة](https://docs.didit.me/ar/reference/data-models.md#مرجع-قيم-الحالة)) — راجع [مرجع تعدادات الحالة](https://docs.didit.me/ar/reference/data-models.md#مرجع-قيم-الحالة). يحدد التعداد أيضاً `Resub Requested`، وهو ما لا يُنتجه التحقق من قواعد البيانات عملياً.

| الحالة | المعنى |
| - | - |
| `Not Finished` | لم يُسفر التحقق عن نتيجة بعد (الحالة الأولية؛ وتُسجَّل أيضاً عندما يفشل استدعاء مستقل عبر جميع الخدمات). |
| `Approved` | لم يتم إطلاق أي مخاطر، أو أن المخاطر الوحيدة التي تم إطلاقها مُهيأة على `NO_ACTION` (الإعداد الافتراضي للتطابق الجزئي). |
| `Declined` | نتيجة عدم تطابق أو تطابق جزئي تم تهيئة الإجراء الخاص بها ليكون `DECLINE`. |
| `In Review` | نتيجة عدم تطابق أو تطابق جزئي تم تهيئة الإجراء الخاص بها ليكون `REVIEW`، أو تعذر تشغيل التحقق على الإطلاق (`COULD_NOT_PERFORM_DATABASE_VALIDATION` — مراجعة دائماً). |

تُطبَّق قواعد الحالة المخصصة لكل عقدة فوق هذه الحالة الأساسية. راجع [تحذيرات التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md) للاطلاع على الإجراءات القابلة للتهيئة وقيمها الافتراضية.

### رموز النتائج

يحمل كل إدخال في `validations[]` رمز `outcome_code` محايداً للمزودين — وهو أحد الرموز التالية: `MATCH`، أو `PARTIAL_MATCH`، أو `NO_MATCH`، أو `DOCUMENT_NOT_FOUND`، أو `INVALID_DOCUMENT_FORMAT`، أو `INVALID_INPUT`، أو `MINOR_BLOCKED`، أو `DECEASED`، أو `BIOMETRIC_NO_MATCH`، أو `BIOMETRIC_IMAGE_UNUSABLE`، أو `INCONCLUSIVE`، أو `DOCUMENT_SUPERSEDED`، أو `REGISTRY_UNAVAILABLE`، أو `REGISTRY_ERROR`. انتبه إلى الفروق: يعني `NO_MATCH` أن السجل لم يؤكد البيانات بشكل قاطع، ويعني `INCONCLUSIVE` أن السجل تعذر عليه تحديد النتيجة بأي من الاتجاهين (يتم التوجيه إلى المراجعة، وليس الرفض)، بينما `BIOMETRIC_IMAGE_UNUSABLE` هي مشكلة فنية في صورة سيلفي (إعادة التقاط) — على عكس `BIOMETRIC_NO_MATCH` القاطعة. راجع التصنيف الكامل وطريقة التعامل الموصى بها في صفحة [رموز النتائج](https://docs.didit.me/ar/core-technology/database-validation/database-validation-outcome-codes.md).

### إدخال واحد لكل خدمة

تحتوي مصفوفة `validations[]` على **عنصر واحد لكل خدمة أنتجت payload للنتيجة** (كائن `validation`، أو `source_data`، أو `outcome_code`، أو `outcome_detail`). إذا كان سير العمل لديك يُشغّل خدمات متعددة لنفس الدولة (على سبيل المثال Brazil CPF + Brazil CNH)، فستظهر كل خدمة بشكل منفصل مع `service_id` و`outcome_code` و`source_data` الخاصة بها. وتعمل القيمة الإجمالية `match_type` على التجميع عبر جميع الخدمات (أي تطابق كامل → `full_match`؛ وإلا فإن أي تطابق جزئي → `partial_match`؛ وإلا `no_match`)، وتُشتق `validation_type` من عدد الخدمات المختلفة التي تطابقت بالكامل — راجع [طرق التطابق](https://docs.didit.me/ar/core-technology/database-validation/database-validation-matching-methods.md).

### عناوين URL الموقعة مسبقاً للصور

تُعاد حقول الصور في `source_data` (`photo`، `signature`) و`screened_data` (`selfie`، `cnh_qr_code_image`، `document_image`) في صورة **عناوين URL موقعة مسبقاً** تنتهي صلاحيتها — يمكنك تحديثها عبر إعادة استدعاء endpoint القرار. ولا يتم كشف payload الخام الوارد من المصدر عبر API عن قصد.

## أمثلة

### مقبولة — التحقق من حالة CPF في البرازيل (Receita Federal)

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "BRA",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "tax_number": "12345678900",
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1980-01-01"
  },
  "validations": [
    {
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "outcome_code": "MATCH",
      "outcome_detail": "200",
      "validation": {
        "full_name": "full_match",
        "date_of_birth": "full_match",
        "identification_number": "full_match"
      },
      "source_data": {
        "identification_number": "12345678900",
        "first_name": "JOHN",
        "last_name": "DOE",
        "date_of_birth": "1980-01-01",
        "lgpd_minor": false,
        "minor_under_16": false,
        "minor_under_18": false
      }
    }
  ],
  "warnings": []
}
```

### مقبولة — التحقق البيومتري من DNI في الأرجنتين (RENAPER)

بالنسبة للأرجنتين، يستخدم التحقق RENAPER مع مطابقة الوجه البيومترية. تتضمن الاستجابة `face_match_score` وحقول هوية إضافية يعيدها السجل.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "Approved",
  "issuing_state": "ARG",
  "validation_type": "one_by_one",
  "match_type": "full_match",
  "screened_data": {
    "document_number": "12345678",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=...",
    "gender": "M",
    "first_name": "John",
    "last_name": "Doe"
  },
  "validations": [
    {
      "service_id": "arg_renaper",
      "service_name": "Argentina - DNI verification (RENAPER)",
      "outcome_code": "MATCH",
      "validation": {
        "full_name": "full_match",
        "identification_number": "full_match"
      },
      "source_data": {
        "identification_number": "12345678",
        "first_name": "John",
        "last_name": "Doe",
        "full_name": "John Doe",
        "date_of_birth": "1990-01-01",
        "tax_id": "20000000019",
        "tax_id_type": "CUIT",
        "face_match_score": 97
      }
    }
  ],
  "warnings": []
}
```

### قيد المراجعة — تعذر تشغيل السجل

عندما لا تُعيد أي خدمة نتيجة قابلة للاستخدام — كأن تكون الحقول المطلوبة مفقودة أو غير صحيحة، أو يتعذر الوصول إلى السجل — تظل `match_type` بقيمة `null`، وتكون `validation_type` بقيمة `not_enabled`، ويصدر تحذير `COULD_NOT_PERFORM_DATABASE_VALIDATION`، وتنتقل الميزة إلى `In Review` حتى يتم تصحيح البيانات. **لا تُفرض رسوم** على الخدمات التي تم تخطيها.

```json theme={null}
{
  "node_id": "feature_db_validation_1",
  "status": "In Review",
  "issuing_state": "PAN",
  "validation_type": "not_enabled",
  "match_type": null,
  "screened_data": {
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1990-01-01",
    "selfie": "https://<media-host>/sessions/<session-id>/selfie.jpg?X-Amz-Signature=..."
  },
  "validations": [],
  "errors": [
    {
      "code": "invalid_screened_data",
      "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
      "missing_required_fields": ["personal_number"],
      "service_id": "pan_cedula_sib_plus"
    }
  ],
  "warnings": [
    {
      "feature": "DATABASE_VALIDATION",
      "risk": "COULD_NOT_PERFORM_DATABASE_VALIDATION",
      "additional_data": {
        "reason": "Database validation was skipped before any provider request because the screened data is incomplete or invalid.",
        "database_validation_errors": [
          {
            "code": "invalid_screened_data",
            "message": "Database validation was skipped before calling the provider because the screened data has missing required fields: personal_number.",
            "missing_required_fields": ["personal_number"],
            "service_id": "pan_cedula_sib_plus"
          }
        ],
        "missing_required_fields_by_service": { "pan_cedula_sib_plus": ["personal_number"] },
        "invalid_format_fields_by_service": {},
        "field_reasons_by_service": {}
      },
      "log_type": "warning",
      "short_description": "Could not perform database validation",
      "long_description": "The system couldn't perform the database validation, please fill the required fields for this country to automatically proceed with database validation.",
      "node_id": "feature_db_validation_1"
    }
  ]
}
```

املأ الحقل المفقود من صفحة تفاصيل الجلسة في Console — حيث يؤدي حفظه إلى إعادة تشغيل الفحص تلقائياً وإزالة التحذير عند النجاح.

## ذات صلة

* [نظرة عامة على التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/overview.md) — كيف تعمل API بشكل شامل والسجلات المدعومة.
* [طرق التطابق](https://docs.didit.me/ar/core-technology/database-validation/database-validation-matching-methods.md) — كيفية اشتقاق نتائج 1×1 / 2×2 (`validation_type: one_by_one` / `two_by_two`).
* [رموز النتائج](https://docs.didit.me/ar/core-technology/database-validation/database-validation-outcome-codes.md) — التصنيف الكامل لكل نتيجة مع رموز التفاصيل الخاصة بكل دولة.
* [الدول والخدمات المدعومة](https://docs.didit.me/ar/core-technology/database-validation/database-validation-supported-countries.md) — كل سجل فعّال، والحقول المطلوبة، وسعر كل استدعاء.
* [تحذيرات التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md) — ما نعرضه عندما يتعذر تشغيل إحدى الخدمات.
* [نماذج البيانات — التحقق من قواعد البيانات](https://docs.didit.me/ar/reference/data-models.md#التحقق-من-قواعد-البيانات) — المخطط المعتمد لكل حقل على حدة.


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