> ## 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.75، بدون عقود أو حد أدنى.

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

## التغطية

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

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `first_name` | نعم | `John` |
| `last_name` | نعم | `Doe` |
| `date_of_birth` | نعم | `1990-01-01` |
| `national_id` | نعم | `12345678` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `first_name`، `last_name`، `date_of_birth`، `national_id`
* **المدخلات الاختيارية:** `vendor_data`
* **الموافقة:** غير مطلوبة
* **توفّر سير العمل:** متاح في سير العمل
* **التغطية:** \~ 90%
* **السعر:** \$0.75 لكل استعلام ناجح

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

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

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

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

مثال: `KEN`

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

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

مثال: `ken_national_id`

**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`

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

رقم الهوية الوطنية لهذه الخدمة.

مثال: `12345678`

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

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

مثال: `user-1234`

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

* يجب أن يطابق `national_id` النمط `\d{8,9}`.

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

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

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="KEN",
    services=["ken_national_id"],
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    national_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: "KEN",
  services: ["ken_national_id"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  national_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: "KEN",
	Services:     didit.Some([]string{"ken_national_id"}),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	NationalID:   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("KEN")
        .services(List.of("ken_national_id"))
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .nationalId("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' => 'KEN',
    'services' => ['ken_national_id'],
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'national_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: "KEN",
  services: ["ken_national_id"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  national_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 = "KEN",
    Services = new string[] { "ken_national_id" },
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    NationalId = "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": "KEN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "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": "KEN",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "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": "KEN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya 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"
      }
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`**: رقم الوثيقة المُرسل لا يتوافق مع أي سجل في سجل البيانات.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "KEN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "ken_national_id",
      "service_name": "Kenya 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` باختلاف ما يُرجعه السجل. يوثّق المثال المُنشأ لـ `ken_national_id` حاليًا هذا الشكل الموحّد:

* `date_of_birth`
* `first_name`
* `gender`
* `identification_number`
* `last_name`

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

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

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

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

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