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"
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)
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);
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)
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
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());
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
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));
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
🇵🇦 بنما
بنما - Cédula مع مطابقة الوجه البيومترية API
التحقق من بطاقة Cédula في بنما عبر قاعدة البيانات الرسمية ومطابقة الوجه بيومترياً عبر Didit. بدءاً من $1.50 لكل استدعاء، دون عقود.
POST
/
v3
/
database-validation
/
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"
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)
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);
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)
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
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());
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
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));
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
{
"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"
}
}
]
}
يتحقق من بطاقة 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 لكل استعلام ناجح
معاملات الطلب
string
افتراضي:"PAN"
مطلوب
رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.مثال:
PANstring
افتراضي:"pan_cedula_sib_plus"
مطلوب
مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب مقتصراً على قاعدة البيانات المحددة هذه.مثال:
pan_cedula_sib_plusstring
افتراضي:"8-123-456"
مطلوب
رقم الهوية الشخصية الخاص بالدولة.مثال:
8-123-456file
مطلوب
ملف صورة السيلفي المراد رفعه للتحقق البيومتري من قاعدة البيانات. الصيغ المقبولة: JPEG أو PNG أو WebP.مثال:
@./selfie.jpgstring
افتراضي:"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-]*.
طريقة الاستدعاء
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"
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)
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);
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)
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
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());
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
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 المعروضة هي حالة الميزة الافتراضية، ويمكن لـإجراءات المطابقة الجزئية / عدم المطابقة التي تضبطها أن تغيّرها.MATCH - أكد السجل الهوية، وتطابقت كل الحقول المفحوصة.{
"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 - لم يُرجع السجل أي تطابق للبيانات المرسلة.{
"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 - كانت درجة مطابقة الوجه أدنى من عتبة القبول، أي أن الشخص الظاهر في صورة السيلفي ليس الشخص نفسه الظاهر في صورة السجل.{
"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 - تعذّرت معالجة صورة السيلفي (فارغة، أو لا تحتوي على وجه، أو ذات جودة منخفضة، أو تعذّر على السجل قراءتها). اطلب من المستخدم إعادة التقاط صورة السيلفي.{
"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 - تطابقت الهوية، لكن السجل يشير إلى أن الشخص متوفى.{
"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_birthexpiration_datefull_namegenderidentification_numberissue_datelast_nameplace_of_birthsignature
الأسعار واتفاقيات مستوى الخدمة
تُحتسب استعلامات بنما - Cédula مع مطابقة الوجه البيومترية (SIB Plus، المستوى المتقدم) فقط عندما تتلقى Didit نتيجة حاسمة من مصدر التحقق.- السعر لكل استدعاء: $1.50 USD.
- الفوترة: لكل استعلام ناجح. لا يُحتسب عليك أي رسوم عندما يتعذّر الوصول إلى السجل، أو عندما تكون الحقول المطلوبة مفقودة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
- زمن الاستجابة: النموذجي عند p95 هو أقل من 2 ثانية.
- التوافر: 99.9% لكل ربع سنة من جهة Didit؛ ويتفاوت توافر المصدر التابع حسب الدولة ومجموعة البيانات.
متابعة القراءة
آخر تعديل في ٧ نوفمبر ٢٠٢٦