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

> إثراء الهوية العالمي عبر بنية Didit التحتية للهوية، مع بحث في شبكة الهويات العالمية. يبدأ السعر من $0.20 لكل استدعاء، بلا عقود ولا حد أدنى.

يحدّد هذا الاستعلام الأشخاص (الأسماء وتواريخ الميلاد والعناوين وأرقام الهواتف والبريد الإلكتروني والأرقام الوطنية) ويحسب درجة مطابقة الاسم انطلاقاً من البريد الإلكتروني و/أو رقم الهاتف، وذلك عبر شبكة عالمية لمعلومات المخاطر. تُحتسب الرسوم عن كل طلب. يتيح Didit هذه الخدمة عبر `POST /v3/database-validation/` لتتمكن من فحص البيانات المرسلة مقابل شبكة الهوية المتصلة وتلقي نتائج مطابقة موحّدة. هذه شبكة إثراء تابعة لجهة خارجية، وليست سجلاً حكومياً موثوقاً: لا تعرض نتائجها على أنها تحقق من مصدر أساسي.

## التغطية

* **التغطية:** 50+ سوق
* **الدولة:** عالميًا
* **معرّف الخدمة:** `glb_identity_enrichment`
* **نطاق البيانات:** الهوية
* **الفئة:** IdentityEnrichment

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `email` | لا | `john.doe@example.com` |
| `phone` | لا | `+15550101000` |
| `first_name` | لا | `John` |
| `last_name` | لا | `Doe` |
| `full_name` | لا | `John Doe` |
| `country_of_residence` | لا | `US` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** لا يوجد
* **المدخلات الاختيارية:** `email`، `phone`، `first_name`، `last_name`، `full_name`، `country_of_residence`، `vendor_data`
* **الموافقة:** مطلوبة
* **توفر سير العمل:** واجهة API المستقلة فقط
* **التغطية:** 50+ سوق
* **السعر:** \$0.20 لكل استعلام ناجح

لا تُقدَّم هذه الخدمة كخطوة من خطوات التحقق من قواعد البيانات داخل سير العمل. هذا القيد يحدد مكان تشغيل الفحص، لا ما يحق لك إرساله. استدعها عبر واجهة API المستقلة، حيث تزوّدها بالمدخلات مباشرة.

## معاملات الطلب

**issuing\_state** `string` *required* (default: GLB)

رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.

مثال: `GLB`

**services** `string` *required* (default: glb\_identity\_enrichment)

مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب مقتصراً على قاعدة البيانات المحددة هذه.

مثال: `glb_identity_enrichment`

**consent** `boolean` *required* (default: true)

موافقة المستخدم النهائي الصريحة على هذه الخدمة.

مثال: `true`

**email** `string` (default: [john.doe@example.com](mailto:john.doe@example.com))

عنوان البريد الإلكتروني.

مثال: `john.doe@example.com`

**phone** `string` (default: +15550101000)

رقم الهاتف بالصيغة الدولية.

مثال: `+15550101000`

**first\_name** `string` (default: John)

الاسم الأول المراد التحقق منه.

مثال: `John`

**last\_name** `string` (default: Doe)

اسم العائلة المراد التحقق منه.

مثال: `Doe`

**full\_name** `string`

الاسم القانوني الكامل المراد التحقق منه.

مثال: `John Doe`

**country\_of\_residence** `string` (default: US)

بلد الإقامة وفق ISO 3166-1 alpha-2، وهو اختياري. يُستخدم فقط لتركيز البحث عن الهوية.

مثال: `US`

**vendor\_data** `string` (default: user-1234)

مرجعك الثابت للمستخدم، مثل معرّف المستخدم الداخلي لديك. يستخدمه Didit لربط الفحوصات المستقلة بالمستخدم النهائي نفسه، مما يقلل من ضجيج اكتشاف التكرار.

مثال: `user-1234`

## قواعد المدخلات وملاحظات التحقق

* أرسل `email` أو `phone` على الأقل، فهما مفتاحا البحث. الطلب الذي لا يحتوي على أيٍّ منهما لا يمكنه تنفيذ استعلام الإثراء، ويُرفض قبل استعلام المصدر، ولا تُحتسب عنه رسوم.
* أضف الاسم كلما توفر لديك، إذ يقارن المصدر نتيجة البحث به ويحتسب درجة المطابقة. أرسل `first_name` و`last_name` معاً، فهما الحقلان اللذان تقارنهما خريطة `validation` في الاستجابة. الطلب الذي يرسل `full_name` وحده يُقيَّم من المصدر، لكنه يعود بخريطة `validation` فارغة وبقيمة `match_type` على المستوى الأعلى تساوي null.
* `country_of_residence` رمز ISO 3166-1 alpha-2 يُستخدم لتركيز الاستعلام.
* تُحتسب رسوم كل استعلام مكتمل، حتى لو لم يُعثر على أي شخص (`persons_found: 0`). الطلب الوحيد المجاني هو الطلب المرفوض قبل تنفيذ الاستعلام، أي الطلب الذي لا يتضمن `email` ولا `phone`.

## كيفية الاستدعاء

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=GLB" \
  -F "services=glb_identity_enrichment" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "email=john.doe@example.com" \
  -F "phone=+15550101000" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "country_of_residence=US"
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="GLB",
    services=["glb_identity_enrichment"],
    consent=True,
    first_name="John",
    last_name="Doe",
    phone="+15550101000",
    email="john.doe@example.com",
    country_of_residence="US",
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit from "@didit-protocol/sdk-node";

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

const result = await didit.databaseValidation.validate({
  issuing_state: "GLB",
  services: ["glb_identity_enrichment"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  phone: "+15550101000",
  email: "john.doe@example.com",
  country_of_residence: "US",
  vendor_data: "user-1234",
});
console.log(result);
```

```go Go theme={null}
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()

result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
	IssuingState:       "GLB",
	Services:           didit.Some([]string{"glb_identity_enrichment"}),
	Consent:            didit.Bool(true),
	FirstName:          didit.String("John"),
	LastName:           didit.String("Doe"),
	Phone:              didit.String("+15550101000"),
	Email:              didit.String("john.doe@example.com"),
	CountryOfResidence: didit.String("US"),
	VendorData:         didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;

// Reads DIDIT_API_KEY.
Didit client = new Didit();

var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
        .issuingState("GLB")
        .services(List.of("glb_identity_enrichment"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .phone("+15550101000")
        .email("john.doe@example.com")
        .countryOfResidence("US")
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'GLB',
    'services' => ['glb_identity_enrichment'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'phone' => '+15550101000',
    'email' => 'john.doe@example.com',
    'country_of_residence' => 'US',
    'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
```

```ruby Ruby theme={null}
require "didit"

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

result = didit.database_validation.validate(
  issuing_state: "GLB",
  services: ["glb_identity_enrichment"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  phone: "+15550101000",
  email: "john.doe@example.com",
  country_of_residence: "US",
  vendor_data: "user-1234"
)
puts result.to_h
```

```csharp .NET theme={null}
using System;
using System.Text.Json;
using Didit;

// Reads DIDIT_API_KEY.
using var client = new DiditClient();

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "GLB",
    Services = new string[] { "glb_identity_enrichment" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    Phone = "+15550101000",
    Email = "john.doe@example.com",
    CountryOfResidence = "US",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

تعيد كل عملية استدعاء ناجحة الرمز HTTP `200`. يوضح الحقل **`outcome_code`** ما حدث فعلياً، فيميّز مثلاً بين عدم تطابق بيومتري حقيقي (`BIOMETRIC_NO_MATCH`) وصورة سيلفي تعذّرت قراءتها (`BIOMETRIC_IMAGE_UNUSABLE`). الحالة `status` المعروضة هي الحالة الافتراضية للميزة، ويمكن أن تتجاوزها [إجراءات Partial Match وNo Match](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md) التي هيّأتها.

**`MATCH`** – تم ربط البريد الإلكتروني أو رقم الهاتف بشخص، والاسم في أفضل تطابق يطابق الاسم الذي أرسلته.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "GLB",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "John",
        "last_name": "Doe",
        "persons_found": 1
      },
      "validation": {
        "full_name": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`** – تم ربط البريد الإلكتروني أو رقم الهاتف بشخص، لكن الاسم في أفضل تطابق يطابق الاسم الذي أرسلته جزئياً فقط.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "GLB",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "John",
        "last_name": "Dow",
        "persons_found": 1
      },
      "validation": {
        "full_name": "partial_match"
      }
    }
  ]
}
```

**`NO_MATCH`** – تم ربط البريد الإلكتروني أو رقم الهاتف بشخص، لكن الاسم في أفضل تطابق لا يطابق الاسم الذي أرسلته.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "GLB",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "Jane",
        "last_name": "Roe",
        "persons_found": 1
      },
      "validation": {
        "full_name": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`** – تم ربط البريد الإلكتروني أو رقم الهاتف بشخص، لكن لم تُرجَع أي درجة للاسم، على سبيل المثال لأن الطلب لم يتضمن اسماً. لذلك لا يُعلن عن أي نتيجة، فتكون `validation` فارغة و`match_type` قيمته null، ويُرسل الفحص إلى المراجعة. أرسل `first_name` + `last_name` للحصول على نتيجة مُقيَّمة، فهذان الحقلان هما اللذان تقارنهما `validation`، والطلب الذي يتضمن `full_name` فقط يحصل على `outcome_code` مُقيَّم، لكن `validation` تبقى فارغة.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "GLB",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "persons_found": 1
      },
      "validation": {}
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`** – لم يُربط البريد الإلكتروني أو رقم الهاتف بأي شخص (`persons_found: 0`). لا يوجد اسم للمقارنة، لذلك تكون `validation` فارغة و`match_type` قيمته null، والنتيجة سلبية نهائية تتبع إجراء No Match لديك. تُحتسب تكلفة الاستعلام رغم ذلك.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "GLB",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "persons_found": 0
      },
      "validation": {}
    }
  ]
}
```

## البيانات المُرجعة

تعتمد الحقول الدقيقة التي تظهر في `source_data` على ما يعيده السجل. يوثّق المثال المُولَّد لـ `glb_identity_enrichment` حالياً هذا الشكل الموحّد:

* `first_name`
* `last_name`
* `persons_found`

## الأسعار واتفاقيات مستوى الخدمة

تُحتسب استعلامات Global - Identity Enrichment فقط عندما يتلقى Didit نتيجة حاسمة من مصدر التحقق.

* **السعر لكل استدعاء:** \$0.20 دولار أمريكي.
* **الفوترة:** لكل استعلام ناجح. لا يُحتسب عليك أي مبلغ عندما يكون السجل غير متاح، أو عندما تكون الحقول المطلوبة ناقصة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
* **زمن الاستجابة:** عادةً p95 \< 2 ثانية.
* **التوفر:** 99.9% في الربع السنوي من جهة Didit؛ ويختلف توفر المصدر النهائي حسب الدولة ومجموعة البيانات.

## متابعة القراءة

* [نظرة عامة على Global Database Validation](https://docs.didit.me/ar/getting-started/database-validation-pricing.md)
* [نظرة عامة على التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/overview.md)
* [رموز النتائج](https://docs.didit.me/ar/core-technology/database-validation/database-validation-outcome-codes.md)


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