> ## 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. الدفع لكل استدعاء بدءاً من $0.59، دون عقود أو حد أدنى.

يتحقق من بيانات الإدخال مقابل قاعدة بيانات تابعة لجهة حكومية تتضمن بيانات الهوية الوطنية للمواطنين. تتيح Didit هذه الخدمة عبر `POST /v3/database-validation/` لتتمكن من التحقق من البيانات المرسلة مقابل المصدر الموثوق والحصول على نتائج مطابقة موحدة.

## التغطية

* **التغطية:** \~ 80%
* **الدولة:** كمبوديا
* **معرّف الخدمة:** `khm_national_id`
* **نطاق البيانات:** الهوية
* **الفئة:** NationalIDRegistry

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `first_name` | نعم | `John` |
| `last_name` | نعم | `Doe` |
| `date_of_birth` | نعم | `1990-01-01` |
| `voter_id` | نعم | `12345678` |
| `gender` | لا | `M` |
| `address.street_1` | لا | `123 Sample Street` |
| `address.street_2` | لا | `Unit 4` |
| `address.city` | لا | `Sample City` |
| `address.region` | لا | `Sample State` |
| `address.postal_code` | لا | `10001` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `first_name`، `last_name`، `date_of_birth`، `voter_id`
* **المدخلات الاختيارية:** `gender`، `address.street_1`، `address.street_2`، `address.city`، `address.region`، `address.postal_code`، `vendor_data`
* **الموافقة:** مطلوبة
* **توفر سير العمل:** متاح في سير العمل
* **التغطية:** \~ 80%
* **السعر:** \$0.59 لكل استعلام ناجح

لا يحمل كل مستند تقبله هذه الخدمة المعرّف الذي تستعلم بواسطته. عندما لا يُستخرج المعرّف من المستند، يُسجَّل الفحص بصفته **غير مطبّق**: لا يتم الاستعلام عن أي قاعدة بيانات ولن يتم فرض أي رسوم عليك. وفي بعض الدول يشكّل ذلك نسبة كبيرة من المستخدمين الفعليين. لتغطيتهم، اجمع المعرّف أيضًا من إجابة في الاستبيانات، أو من حقل استخراج Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، ثم اربطه بخطوة التحقق من قواعد البيانات.

## معاملات الجسم

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

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

مثال: `KHM`

**services** `string` *required* (default: khm\_national\_id)

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

مثال: `khm_national_id`

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

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

مثال: `true`

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

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

مثال: `John`

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

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

مثال: `Doe`

**date\_of\_birth** `string` *required* (default: 1990-01-01)

تاريخ الميلاد بصيغة `YYYY-MM-DD`.

مثال: `1990-01-01`

**voter\_id** `string` *required* (default: 12345678)

معرّف الناخب.

مثال: `12345678`

**gender** `string`

قيمة الجنس، عندما تشترطها قاعدة البيانات.

القيم المسموحة: `M` (ذكر)، `F` (أنثى)، `X` (آخر أو غير معروف).

مثال: `M`

**address** `object`

كائن عنوان سكني منظم. استخدم `street_1` و`street_2` و`city` و`region` و`postal_code` و`country`. لا يزال عنوان نصي كامل بالصيغة القديمة مقبولًا، لكنه غير مستحسن.

مثال: `{"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}`

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

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

مثال: `user-1234`

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

* الحقل `address` اختياري لهذه الخدمة. يمكنك إرسال عنوان `address` واحد كامل، وستقوم Didit بتقسيمه إلى عناصر عنوان منظمة عندما يكون ذلك ممكنًا، أو يمكنك إرسال الحقول المنظمة بشكل صريح.
* يجب أن يطابق `voter_id` التعبير `(?:\d{8,9}|\d{2}-\d{3}-\d{3})`.
* بالنسبة لخدمات العناوين، أرسل حقول العنوان المنظمة بدلًا من سلسلة `address` واحدة كلما أمكن ذلك.
* `address.street_1` هو عنوان الشارع، ويشمل رقم المبنى ونوع الشارع.
* `address.street_2` هو الشقة أو الوحدة أو المبنى أو الطابق أو أي سطر إضافي للعنوان. أرسله فقط عندما يتوفر لديك.
* `address.city` هو المدينة أو الضاحية أو الحي أو المنطقة السكنية.
* `address.region` هو الولاية أو المحافظة أو المنطقة أو البلدة.
* `address.postal_code` هو الرمز البريدي.
* تتطلب خدمات قواعد البيانات المعتمدة على العنوان على الأقل عنوان الشارع والرمز البريدي؛ ولا تُفرض عليك رسوم على الطلبات المرفوضة قبل البحث في المصدر.

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

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=KHM" \
  -F "services=khm_national_id" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "voter_id=12345678"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="KHM",
    services=["khm_national_id"],
    consent=True,
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    voter_id="12345678",
    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: "KHM",
  services: ["khm_national_id"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  voter_id: "12345678",
  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: "KHM",
	Services:     didit.Some([]string{"khm_national_id"}),
	Consent:      didit.Bool(true),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	VoterID:      didit.String("12345678"),
	VendorData:   didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.time.LocalDate;
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("KHM")
        .services(List.of("khm_national_id"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .voterId("12345678")
        .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' => 'KHM',
    'services' => ['khm_national_id'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'voter_id' => '12345678',
    '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: "KHM",
  services: ["khm_national_id"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  voter_id: "12345678",
  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 = "KHM",
    Services = new string[] { "khm_national_id" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    VoterId = "12345678",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

تُرجع كل عملية استدعاء ناجحة رمز HTTP `200`. يُخبرك الحقل **`outcome_code`** بما حدث فعلاً، فيُميّز مثلاً بين عدم تطابق بيومتري حقيقي (`BIOMETRIC_NO_MATCH`) وصورة سيلفي تعذّرت قراءتها (`BIOMETRIC_IMAGE_UNUSABLE`). الحالة `status` المعروضة هي الحالة الافتراضية للميزة، ويمكن لـ[إجراءات التطابق الجزئي / عدم التطابق](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": "KHM",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "khm_national_id",
      "service_name": "Cambodia National ID",
      "source_data": {
        "address": "123 Sample Street",
        "address_match_score": "1.000",
        "building_number": "SAMPLE-12345",
        "city": "Sample City",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "state": "Sample State",
        "street": "sample_value",
        "verifications": {
          "date_of_birth": true,
          "full_name": true,
          "identification_number": true
        }
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`** — وُجد رقم الهوية، لكن حقلاً شخصياً واحداً أو أكثر (عادةً الاسم أو تاريخ الميلاد) لم يتطابق تماماً.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "KHM",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "khm_national_id",
      "service_name": "Cambodia National ID",
      "source_data": {
        "address": "123 Sample Street",
        "address_match_score": "1.000",
        "building_number": "SAMPLE-12345",
        "city": "Sample City",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "name_match_score": "1.000",
        "state": "Sample State",
        "street": "sample_value",
        "verifications": {
          "date_of_birth": true,
          "full_name": false,
          "identification_number": true
        }
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`** — لم يُرجع السجل أي تطابق للبيانات المُرسلة.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "KHM",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "khm_national_id",
      "service_name": "Cambodia National ID",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

## البيانات المُعادة

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

* `address`
* `address_match_score`
* `building_number`
* `city`
* `date_of_birth`
* `first_name`
* `full_name`
* `identification_number`
* `last_name`
* `name_match_score`
* `state`
* `street`

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

تُحتسب استعلامات رقم الهوية الوطنية في كمبوديا فقط عندما تتلقى Didit نتيجة حاسمة من مصدر التحقق.

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

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

* [نظرة عامة على التحقق من قواعد البيانات في كمبوديا](https://docs.didit.me/api-reference/database-validation/cambodia.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.