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

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

## التغطية

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

## المدخلات

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

* **المدخلات المطلوبة:** `full_name` و`date_of_birth` و`national_id` و`address.street_1` و`address.postal_code`
* **المدخلات الاختيارية:** `address.street_2` و`address.city` و`address.region` و`gender` و`vendor_data`
* **الموافقة:** مطلوبة
* **التوفر في سير العمل:** متاح في سير العمل
* **التغطية:** \~ 90%
* **السعر:** \$0.35 لكل استعلام ناجح

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

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

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

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

مثال: `IDN`

**services** `string` *required* (default: idn\_residential\_identity\_card)

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

مثال: `idn_residential_identity_card`

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

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

مثال: `true`

**full\_name** `string` *required* (default: John Doe)

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

مثال: `John Doe`

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

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

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

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

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

مثال: `1111111111111111`

**address** `object` *required* (default: \{"street\_1":"123 Sample Street","street\_2":"Unit 4","city":"Sample City","region":"Sample State","postal\_code":"10001","country":"US"})

كائن عنوان سكني مُهيكل. استخدم `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"}`

**gender** `string`

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

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

مثال: `M`

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

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

مثال: `user-1234`

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

* يجب أن يحتوي `national_id` على أرقام فقط؛ أزل المسافات والشرطات وعلامات الترقيم قبل إرسال الطلب.
* يجب أن يكون طول `national_id` 16 حرفاً بالضبط.
* بالنسبة إلى خدمات العناوين، أرسل حقول العنوان المُهيكلة بدلاً من سلسلة `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=IDN" \
  -F "services=idn_residential_identity_card" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "full_name=John Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "national_id=1111111111111111" \
  -F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="IDN",
    services=["idn_residential_identity_card"],
    consent=True,
    full_name="John Doe",
    date_of_birth="1990-01-01",
    address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
    national_id="1111111111111111",
    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: "IDN",
  services: ["idn_residential_identity_card"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  national_id: "1111111111111111",
  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: "IDN",
	Services:     didit.Some([]string{"idn_residential_identity_card"}),
	Consent:      didit.Bool(true),
	FullName:     didit.String("John Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	Address:      didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
	NationalID:   didit.String("1111111111111111"),
	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("IDN")
        .services(List.of("idn_residential_identity_card"))
        .consent(true)
        .fullName("John Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
                .street1("123 Sample Street")
                .street2("Unit 4")
                .city("Sample City")
                .region("Sample State")
                .postalCode("10001")
                .country("US")
                .build()))
        .nationalId("1111111111111111")
        .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' => 'IDN',
    'services' => ['idn_residential_identity_card'],
    'consent' => true,
    'full_name' => 'John Doe',
    'date_of_birth' => '1990-01-01',
    'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
    'national_id' => '1111111111111111',
    '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: "IDN",
  services: ["idn_residential_identity_card"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  national_id: "1111111111111111",
  vendor_data: "user-1234"
)
puts result.to_h
```

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

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

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "IDN",
    Services = new string[] { "idn_residential_identity_card" },
    Consent = true,
    FullName = "John Doe",
    DateOfBirth = "1990-01-01",
    Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
    NationalId = "1111111111111111",
    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": "IDN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "idn_residential_identity_card",
      "service_name": "Indonesia Residential Identity Card",
      "source_data": {
        "address_match_score": "1.000",
        "date_of_birth": "1990-01-01",
        "identification_number": "SAMPLE-ID-12345",
        "verifications": {
          "address": true,
          "date_of_birth": true,
          "full_name": true,
          "identification_number": true
        }
      },
      "validation": {
        "address": "full_match",
        "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": "IDN",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "idn_residential_identity_card",
      "service_name": "Indonesia Residential Identity Card",
      "source_data": {
        "address_match_score": "1.000",
        "date_of_birth": "1990-01-01",
        "identification_number": "SAMPLE-ID-12345",
        "verifications": {
          "address": true,
          "date_of_birth": true,
          "full_name": false,
          "identification_number": true
        }
      },
      "validation": {
        "address": "full_match",
        "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": "IDN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "idn_residential_identity_card",
      "service_name": "Indonesia Residential Identity Card",
      "source_data": {
        "address": "NO_MATCH",
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "address": "no_match",
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

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

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

* `address_match_score`
* `date_of_birth`
* `identification_number`

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

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

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

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

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