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

# غواتيمالا - DPI ومطابقة الوجه (RENAP) API: مطابقة الهوية

> غواتيمالا - DPI ومطابقة الوجه (RENAP): التحقق من قاعدة بيانات غواتيمالا الرسمية عبر Didit. الدفع لكل استدعاء من $0.40، دون عقود أو حد أدنى.

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

## التغطية

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

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `document_number` | نعم | `1234567890101` |
| `selfie` | نعم | `@./selfie.jpg` |
| `first_name` | لا | `John` |
| `last_name` | لا | `Doe` |
| `date_of_birth` | لا | `1990-01-01` |
| `vendor_data` | لا | `user-1234` |

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

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

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

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

مثال: `GTM`

**services** `string` *required* (default: gtm\_dpi\_facial)

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

مثال: `gtm_dpi_facial`

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

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

مثال: `true`

**document\_number** `string` *required* (default: 1234567890101)

رقم الوثيقة المستخرج من المستند أو المقدَّم من المستخدم.

مثال: `1234567890101`

**selfie** `file` *required*

ملف صورة السيلفي المراد رفعه للتحقق البيومتري من قاعدة البيانات. الصيغ المقبولة: JPEG أو PNG أو WebP.

مثال: `@./selfie.jpg`

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

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

مثال: `John`

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

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

مثال: `Doe`

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

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

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

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

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

مثال: `user-1234`

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

* رقم DPI الغواتيمالي (13 رقمًا بالضبط)
* يجب أن يحتوي `document_number` على أرقام فقط؛ أزِل المسافات والشرطات وعلامات الترقيم قبل إرسال الطلب.
* يجب أن يكون طول `document_number` 13 حرفًا بالضبط.
* يجب أن يطابق `document_number` النمط `\d{13}`.

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

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

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="GTM",
    services=["gtm_dpi_facial"],
    consent=True,
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    document_number="1234567890101",
    vendor_data="user-1234",
    selfie=open("selfie.jpg", "rb"),
)
print(result)
```

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

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

const result = await didit.databaseValidation.validate({
  issuing_state: "GTM",
  services: ["gtm_dpi_facial"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  document_number: "1234567890101",
  vendor_data: "user-1234",
  selfie: await fileFromPath("selfie.jpg"),
});
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:   "GTM",
	Services:       didit.Some([]string{"gtm_dpi_facial"}),
	Consent:        didit.Bool(true),
	FirstName:      didit.String("John"),
	LastName:       didit.String("Doe"),
	DateOfBirth:    didit.String("1990-01-01"),
	DocumentNumber: didit.String("1234567890101"),
	VendorData:     didit.String("user-1234"),
	Selfie:         didit.Some(didit.FileFromPath("selfie.jpg")),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.nio.file.Path;
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("GTM")
        .services(List.of("gtm_dpi_facial"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .documentNumber("1234567890101")
        .vendorData("user-1234")
        .selfie(Path.of("selfie.jpg"))
        .build());
System.out.println(result);
```

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

require 'vendor/autoload.php';

use Didit\DiditClient;
use Didit\File;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'GTM',
    'services' => ['gtm_dpi_facial'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'document_number' => '1234567890101',
    'vendor_data' => 'user-1234',
    'selfie' => File::fromPath('selfie.jpg'),
]);
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: "GTM",
  services: ["gtm_dpi_facial"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  document_number: "1234567890101",
  vendor_data: "user-1234",
  selfie: Pathname("selfie.jpg")
)
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 = "GTM",
    Services = new string[] { "gtm_dpi_facial" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    DocumentNumber = "1234567890101",
    VendorData = "user-1234",
    Selfie = FileUpload.FromPath("selfie.jpg"),
});
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": "GTM",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "document_expiration_date": "2031-11-24",
        "face_match": true,
        "face_match_score": 98.5,
        "first_name": "JOHN",
        "full_name": "JOHN DOE",
        "gender": "M",
        "identification_number": "1234567890101",
        "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": "GTM",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "document_expiration_date": "2031-11-24",
        "face_match": true,
        "face_match_score": 98.5,
        "first_name": "JOHN",
        "full_name": "JOHN DOE",
        "gender": "M",
        "identification_number": "1234567890101",
        "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": "GTM",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "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"
      }
    }
  ]
}
```

**`BIOMETRIC_NO_MATCH`**: كانت درجة تطابق الوجه أقل من حد القبول، أي أن صورة السيلفي لا تعود لنفس الشخص الموجود في صورة السجل.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "GTM",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "face_match": false,
        "face_match_score": 0,
        "first_name": "NO_MATCH",
        "identification_number": "NO_MATCH",
        "last_name": "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": "GTM",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "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"
      }
    }
  ]
}
```

**`DECEASED`**: تطابقت الهوية، لكن يشير السجل إلى أن الشخص متوفى.

```json 200 OK — DECEASED theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "GTM",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "DECEASED",
      "service_id": "gtm_dpi_facial",
      "service_name": "Guatemala - DPI + face match (RENAP)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "document_expiration_date": "2031-11-24",
        "face_match": true,
        "face_match_score": 98.5,
        "first_name": "JOHN",
        "full_name": "JOHN DOE",
        "gender": "M",
        "identification_number": "1234567890101",
        "last_name": "DOE"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

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

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

* `date_of_birth`
* `document_expiration_date`
* `face_match`
* `face_match_score`
* `first_name`
* `full_name`
* `gender`
* `identification_number`
* `last_name`

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

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

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

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

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