curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZMB" \
-F "services=zmb_national_id" \
-F "vendor_data=user-1234" \
-F "national_id=123456/78/9" \
-F "first_name=John" \
-F "last_name=Doe"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ZMB",
services=["zmb_national_id"],
first_name="John",
last_name="Doe",
national_id="123456/78/9",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ZMB",
Services: didit.Some([]string{"zmb_national_id"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
NationalID: didit.String("123456/78/9"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("ZMB")
.services(List.of("zmb_national_id"))
.firstName("John")
.lastName("Doe")
.nationalId("123456/78/9")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ZMB',
'services' => ['zmb_national_id'],
'first_name' => 'John',
'last_name' => 'Doe',
'national_id' => '123456/78/9',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234"
)
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 = "ZMB",
Services = new string[] { "zmb_national_id" },
FirstName = "John",
LastName = "Doe",
NationalId = "123456/78/9",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ZMB",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZMB",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "DOCUMENT_NOT_FOUND",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
التحقق من قواعد البيانات
التحقق من الرقم الوطني في زامبيا (NRC) API
تحقق رسمي من سجل الضرائب الزامبي (NRC) عبر Didit، من قواعد بيانات زامبيا الموثوقة. الدفع لكل طلب بدءاً من $0.20، بدون عقود ولا حد أدنى.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZMB" \
-F "services=zmb_national_id" \
-F "vendor_data=user-1234" \
-F "national_id=123456/78/9" \
-F "first_name=John" \
-F "last_name=Doe"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ZMB",
services=["zmb_national_id"],
first_name="John",
last_name="Doe",
national_id="123456/78/9",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ZMB",
Services: didit.Some([]string{"zmb_national_id"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
NationalID: didit.String("123456/78/9"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("ZMB")
.services(List.of("zmb_national_id"))
.firstName("John")
.lastName("Doe")
.nationalId("123456/78/9")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ZMB',
'services' => ['zmb_national_id'],
'first_name' => 'John',
'last_name' => 'Doe',
'national_id' => '123456/78/9',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234"
)
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 = "ZMB",
Services = new string[] { "zmb_national_id" },
FirstName = "John",
LastName = "Doe",
NationalId = "123456/78/9",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ZMB",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZMB",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "DOCUMENT_NOT_FOUND",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
يتحقق هذا من أن رقم بطاقة التسجيل الوطنية الزامبية (NRC) يخص دافع الضرائب المذكور اسمه في سجل هيئة الإيرادات الزامبية (Zambia Revenue Authority). يحتفظ السجل باسم دافع الضرائب الكامل فقط، لذا فإن الاسم هو الحقل الوحيد الذي تجري مقارنته. يتيح Didit الوصول إلى هذه الخدمة عبر
POST /v3/database-validation/ لتتمكن من التحقق من البيانات المقدمة مقابل المصدر الرسمي، واستلام نتائج تطابق موحّدة.
التغطية
- التغطية: —
- الدولة: زامبيا
- معرّف الخدمة:
zmb_national_id - نطاق البيانات: الهوية
- الفئة: TaxRegistry
المدخلات
| الحقل | مطلوب | مثال |
|---|---|---|
national_id | نعم | 123456/78/9 |
first_name | نعم | John |
last_name | نعم | Doe |
vendor_data | لا | user-1234 |
- الحقول المطلوبة:
national_id،first_name،last_name - الحقول الاختيارية:
vendor_data - الموافقة: غير مطلوبة
- التوفر في سير العمل: متاح في سير العمل
- التغطية: —
- السعر: $0.20 لكل استعلام ناجح
معاملات الجسم
string
افتراضي:"ZMB"
مطلوب
رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.مثال:
ZMBstring
افتراضي:"zmb_national_id"
مطلوب
مصفوفة تحتوي على معرّف هذه الخدمة. يُبقي تثبيت الخدمة الطلب مقصورًا على قاعدة البيانات المحددة هذه بالضبط.مثال:
zmb_national_idstring
افتراضي:"123456/78/9"
مطلوب
رقم الهوية الوطنية لهذه الخدمة.مثال:
123456/78/9string
افتراضي:"John"
مطلوب
الاسم الأول المراد التحقق منه.مثال:
Johnstring
افتراضي:"Doe"
مطلوب
اسم العائلة المراد التحقق منه.مثال:
Doestring
افتراضي:"user-1234"
مرجع مستخدم ثابت لهذا الشخص، مثل معرّف المستخدم الداخلي لديك. يستخدمه Didit لربط الفحوصات المستقلة بالمستخدم النهائي نفسه، مما يقلل الضوضاء الناتجة عن كشف التكرار.مثال:
user-1234قواعد الإدخال وملاحظات التحقق
- يجب أن يستخدم
national_idأحرفًا كبيرة. - يجب أن يطابق
national_idالنمط\d{6}/?\d{2}/?\d.
كيفية الاستدعاء
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZMB" \
-F "services=zmb_national_id" \
-F "vendor_data=user-1234" \
-F "national_id=123456/78/9" \
-F "first_name=John" \
-F "last_name=Doe"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ZMB",
services=["zmb_national_id"],
first_name="John",
last_name="Doe",
national_id="123456/78/9",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ZMB",
Services: didit.Some([]string{"zmb_national_id"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
NationalID: didit.String("123456/78/9"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("ZMB")
.services(List.of("zmb_national_id"))
.firstName("John")
.lastName("Doe")
.nationalId("123456/78/9")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ZMB',
'services' => ['zmb_national_id'],
'first_name' => 'John',
'last_name' => 'Doe',
'national_id' => '123456/78/9',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ZMB",
services: ["zmb_national_id"],
first_name: "John",
last_name: "Doe",
national_id: "123456/78/9",
vendor_data: "user-1234"
)
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 = "ZMB",
Services = new string[] { "zmb_national_id" },
FirstName = "John",
LastName = "Doe",
NationalId = "123456/78/9",
VendorData = "user-1234",
});
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": "ZMB",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH: عُثر على رقم الهوية، لكن حقلًا شخصيًا واحدًا أو أكثر (عادةً الاسم أو تاريخ الميلاد) لم يتطابق تطابقًا كاملًا.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZMB",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"registration_status": "sample_value"
},
"validation": {
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH: لم يُرجع السجل أي تطابق للبيانات المقدمة.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
DOCUMENT_NOT_FOUND: رقم المستند المقدم لا يطابق أي سجل في السجل.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZMB",
"match_type": "no_match",
"validations": [
{
"outcome_code": "DOCUMENT_NOT_FOUND",
"service_id": "zmb_national_id",
"service_name": "Zambia NRC (tax register)",
"source_data": {
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
البيانات المُرجعة
تعتمد الحقول الدقيقة التي تظهر فيsource_data على ما يعيده السجل. يوثّق المثال المُولَّد لـzmb_national_id حاليًا هذا الشكل الموحّد:
first_namefull_nameidentification_numberlast_nameregistration_status
الأسعار واتفاقيات مستوى الخدمة
تُحتسب استعلامات سجل NRC في زامبيا (السجل الضريبي) فقط عندما يتلقى Didit نتيجة حاسمة من مصدر التحقق.- السعر لكل استدعاء: $0.20 دولار أمريكي.
- الفوترة: لكل استعلام ناجح. لا تُحتسب رسوم عند تعذّر الوصول إلى السجل، أو عند غياب الحقول المطلوبة، أو عند رفض الطلب قبل وصوله إلى المصدر.
- زمن الاستجابة: المعتاد عند المئين 95 أقل من 2 ثانية (p95 < 2 s).
- التوفر: 99.9% لكل ربع سنة من جهة Didit؛ ويختلف توفر المصدر الخارجي حسب الدولة ومجموعة البيانات.
متابعة القراءة
آخر تعديل في ٧ نوفمبر ٢٠٢٦