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

# بنما - Cédula مع مطابقة الوجه البيومترية API

> التحقق من بطاقة Cédula في بنما عبر قاعدة البيانات الرسمية ومطابقة الوجه بيومترياً عبر Didit. بدءاً من $1.50 لكل استدعاء، دون عقود.

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

## التغطية

* **التغطية:** —
* **الدولة:** بنما
* **معرّف الخدمة:** `pan_cedula_sib_plus`
* **نطاق البيانات:** الهوية
* **الفئة:** سجل الهوية الوطنية

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `personal_number` | نعم | `8-123-456` |
| `selfie` | نعم | `@./selfie.jpg` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `personal_number`، `selfie`
* **المدخلات الاختيارية:** `vendor_data`
* **الموافقة:** غير مطلوبة
* **التوفر في سير العمل:** متاح في سير العمل
* **التغطية:** —
* **السعر:** \$1.50 لكل استعلام ناجح

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

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

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

مثال: `PAN`

**services** `string` *required* (default: pan\_cedula\_sib\_plus)

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

مثال: `pan_cedula_sib_plus`

**personal\_number** `string` *required* (default: 8-123-456)

رقم الهوية الشخصية الخاص بالدولة.

مثال: `8-123-456`

**selfie** `file` *required*

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

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

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

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

مثال: `user-1234`

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

* Cédula البنمية (الحد الأدنى 5 محارف)
* يجب أن يتراوح طول `personal_number` بين 5 و20 محرفاً.
* يجب أن يستخدم `personal_number` أحرفاً كبيرة.
* يجب أن يطابق `personal_number` النمط `(?:\d{1,2}(?:-?(?:AV|PI))?|PE|E|N)[\d-]*`.

## طريقة الاستدعاء

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=PAN" \
  -F "services=pan_cedula_sib_plus" \
  -F "vendor_data=user-1234" \
  -F "personal_number=8-123-456" \
  -F "selfie=@./selfie.jpg"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="PAN",
    services=["pan_cedula_sib_plus"],
    personal_number="8-123-456",
    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: "PAN",
  services: ["pan_cedula_sib_plus"],
  personal_number: "8-123-456",
  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:   "PAN",
	Services:       didit.Some([]string{"pan_cedula_sib_plus"}),
	PersonalNumber: didit.String("8-123-456"),
	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.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("PAN")
        .services(List.of("pan_cedula_sib_plus"))
        .personalNumber("8-123-456")
        .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' => 'PAN',
    'services' => ['pan_cedula_sib_plus'],
    'personal_number' => '8-123-456',
    '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: "PAN",
  services: ["pan_cedula_sib_plus"],
  personal_number: "8-123-456",
  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 = "PAN",
    Services = new string[] { "pan_cedula_sib_plus" },
    PersonalNumber = "8-123-456",
    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": "PAN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "pan_cedula_sib_plus",
      "service_name": "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "expiration_date": "1990-01-01",
        "full_name": "John Doe",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "issue_date": "1990-01-01",
        "last_name": "Doe",
        "place_of_birth": "sample_value",
        "signature": "sample_value"
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}
```

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

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "PAN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "pan_cedula_sib_plus",
      "service_name": "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

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

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "PAN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "pan_cedula_sib_plus",
      "service_name": "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`BIOMETRIC_IMAGE_UNUSABLE`** - تعذّرت معالجة صورة السيلفي (فارغة، أو لا تحتوي على وجه، أو ذات جودة منخفضة، أو تعذّر على السجل قراءتها). اطلب من المستخدم إعادة التقاط صورة السيلفي.

```json 200 OK — BIOMETRIC_IMAGE_UNUSABLE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "PAN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
      "service_id": "pan_cedula_sib_plus",
      "service_name": "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

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

```json 200 OK — DECEASED theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "PAN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "DECEASED",
      "service_id": "pan_cedula_sib_plus",
      "service_name": "Panama - Cédula with biometric face-match (SIB Plus, elevated tier)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "expiration_date": "1990-01-01",
        "full_name": "John Doe",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "issue_date": "1990-01-01",
        "last_name": "Doe",
        "place_of_birth": "sample_value",
        "signature": "sample_value"
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}
```

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

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

* `date_of_birth`
* `expiration_date`
* `full_name`
* `gender`
* `identification_number`
* `issue_date`
* `last_name`
* `place_of_birth`
* `signature`

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

تُحتسب استعلامات بنما - Cédula مع مطابقة الوجه البيومترية (SIB Plus، المستوى المتقدم) فقط عندما تتلقى Didit نتيجة حاسمة من مصدر التحقق.

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

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

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