curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=IND" \
-F "services=ind_epic_voter_s_registration" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "epic_card=ABC1234567"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="IND",
services=["ind_epic_voter_s_registration"],
consent=True,
full_name="John Doe",
date_of_birth="1990-01-01",
epic_card="ABC1234567",
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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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: "IND",
Services: didit.Some([]string{"ind_epic_voter_s_registration"}),
Consent: didit.Bool(true),
FullName: didit.String("John Doe"),
DateOfBirth: didit.String("1990-01-01"),
EpicCard: didit.String("ABC1234567"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("IND")
.services(List.of("ind_epic_voter_s_registration"))
.consent(true)
.fullName("John Doe")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.epicCard("ABC1234567")
.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' => 'IND',
'services' => ['ind_epic_voter_s_registration'],
'consent' => true,
'full_name' => 'John Doe',
'date_of_birth' => '1990-01-01',
'epic_card' => 'ABC1234567',
'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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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 = "IND",
Services = new string[] { "ind_epic_voter_s_registration" },
Consent = true,
FullName = "John Doe",
DateOfBirth = "1990-01-01",
EpicCard = "ABC1234567",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "IND",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "IND",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "IND",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"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"
}
}
]
}
🇮🇳 الهند
واجهة برمجة EPIC الهند لسجل الناخبين (ECI)
التحقق من EPIC الهند (سجل الناخبين) (ECI) عبر Didit: استعلام من قاعدة بيانات هندية موثوقة. بدءاً من $0.25 لكل استدعاء، بدون عقود أو حدود دنيا.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=IND" \
-F "services=ind_epic_voter_s_registration" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "epic_card=ABC1234567"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="IND",
services=["ind_epic_voter_s_registration"],
consent=True,
full_name="John Doe",
date_of_birth="1990-01-01",
epic_card="ABC1234567",
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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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: "IND",
Services: didit.Some([]string{"ind_epic_voter_s_registration"}),
Consent: didit.Bool(true),
FullName: didit.String("John Doe"),
DateOfBirth: didit.String("1990-01-01"),
EpicCard: didit.String("ABC1234567"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("IND")
.services(List.of("ind_epic_voter_s_registration"))
.consent(true)
.fullName("John Doe")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.epicCard("ABC1234567")
.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' => 'IND',
'services' => ['ind_epic_voter_s_registration'],
'consent' => true,
'full_name' => 'John Doe',
'date_of_birth' => '1990-01-01',
'epic_card' => 'ABC1234567',
'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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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 = "IND",
Services = new string[] { "ind_epic_voter_s_registration" },
Consent = true,
FullName = "John Doe",
DateOfBirth = "1990-01-01",
EpicCard = "ABC1234567",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "IND",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "IND",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "IND",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"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"
}
}
]
}
يتحقق من بيانات الإدخال مقابل قاعدة بيانات لجنة الانتخابات الهندية. يتيح Didit هذه الخدمة عبر
POST /v3/database-validation/ لتتمكن من التحقق من البيانات المُقدّمة مقابل المصدر الرسمي، والحصول على نتائج تطابق موحّدة.
التغطية
- التغطية: > 75%
- الدولة: الهند
- معرّف الخدمة:
ind_epic_voter_s_registration - نطاق البيانات: حكومي
- الفئة: ElectoralRoll
المدخلات
| الحقل | مطلوب | مثال |
|---|---|---|
full_name | نعم | John Doe |
date_of_birth | نعم | 1990-01-01 |
epic_card | نعم | ABC1234567 |
vendor_data | لا | user-1234 |
- الحقول المطلوبة:
full_name،date_of_birth،epic_card - الحقول الاختيارية:
vendor_data - الموافقة: مطلوبة
- التوفر في سير العمل: متاح في سير العمل مع ربط الحقول
- التغطية: > 75%
- السعر: $0.25 لكل استعلام ناجح
epic_card على وثيقة الهوية، لذلك لا تنتجه أي خطوة بمفردها. اجمعه من إجابة في الاستبيان، أو من حقل استخراج في Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، ثم اربطه بخطوة التحقق من قواعد البيانات. إلى أن يتم ربطه، يعرض محرر سير العمل هذه الخدمة معطّلة ويذكر الحقل الناقص. وعند التشغيل، يعني الحقل الناقص أن الفحص يُتخطى قبل أي استعلام، فلا تُحتسب عليك تكلفة قاعدة بيانات لم يكن من الممكن الاستعلام عنها.
ليست كل وثيقة تقبلها هذه الخدمة تحمل المعرّف الذي تستعلم به. عندما لا يُستخرج المعرّف من الوثيقة، يُسجَّل الفحص بوصفه غير قابل للتطبيق: لا يُستعلم عن أي قاعدة بيانات ولا تُحتسب عليك أي تكلفة، وهذا يمثّل لدى بعض الدول نسبة كبيرة من المستخدمين الفعليين. لتغطيتهم، اجمع المعرّف أيضاً من إجابة في استبيان، أو من حقل استخراج في Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، واربطه بخطوة التحقق من قواعد البيانات.
معاملات الجسم
string
افتراضي:"IND"
مطلوب
رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.مثال:
INDstring
افتراضي:"ind_epic_voter_s_registration"
مطلوب
مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب محصوراً في قاعدة البيانات هذه بالتحديد.مثال:
ind_epic_voter_s_registrationboolean
افتراضي:"true"
مطلوب
موافقة صريحة من المستخدم النهائي على هذه الخدمة.مثال:
truestring
افتراضي:"John Doe"
مطلوب
الاسم القانوني الكامل المراد التحقق منه.مثال:
John Doestring
افتراضي:"1990-01-01"
مطلوب
تاريخ الميلاد بصيغة
YYYY-MM-DD.مثال: 1990-01-01string
افتراضي:"ABC1234567"
مطلوب
رقم بطاقة الناخب EPIC.مثال:
ABC1234567string
افتراضي:"user-1234"
مرجعك الثابت لهذا الشخص، مثل معرّف المستخدم الداخلي لديك. يستخدمه Didit لربط الفحوص المستقلة بالمستخدم النهائي نفسه وتقليل ضوضاء كشف التكرار.مثال:
user-1234قواعد الإدخال وملاحظات التحقق
- يجب أن يطابق
epic_cardالنمط[A-Za-z]{3}\d{7,14}.
كيفية استدعائها
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=IND" \
-F "services=ind_epic_voter_s_registration" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "epic_card=ABC1234567"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="IND",
services=["ind_epic_voter_s_registration"],
consent=True,
full_name="John Doe",
date_of_birth="1990-01-01",
epic_card="ABC1234567",
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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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: "IND",
Services: didit.Some([]string{"ind_epic_voter_s_registration"}),
Consent: didit.Bool(true),
FullName: didit.String("John Doe"),
DateOfBirth: didit.String("1990-01-01"),
EpicCard: didit.String("ABC1234567"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("IND")
.services(List.of("ind_epic_voter_s_registration"))
.consent(true)
.fullName("John Doe")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.epicCard("ABC1234567")
.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' => 'IND',
'services' => ['ind_epic_voter_s_registration'],
'consent' => true,
'full_name' => 'John Doe',
'date_of_birth' => '1990-01-01',
'epic_card' => 'ABC1234567',
'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: "IND",
services: ["ind_epic_voter_s_registration"],
consent: true,
full_name: "John Doe",
date_of_birth: "1990-01-01",
epic_card: "ABC1234567",
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 = "IND",
Services = new string[] { "ind_epic_voter_s_registration" },
Consent = true,
FullName = "John Doe",
DateOfBirth = "1990-01-01",
EpicCard = "ABC1234567",
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": "IND",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH: عُثر على رقم الهوية، لكن حقلاً شخصياً واحداً أو أكثر (عادةً الاسم أو تاريخ الميلاد) لم يتطابق تماماً.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "IND",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH: لم يُعِد السجل أي تطابق للبيانات المُرسلة.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "IND",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "ind_epic_voter_s_registration",
"service_name": "India EPIC (Voter's Registration) (ECI)",
"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"
}
}
]
}
البيانات المُرجعة
تعتمد الحقول الدقيقة الظاهرة فيsource_data على ما يعيده السجل. يوثّق المثال المُنشأ تلقائياً لـ ind_epic_voter_s_registration حالياً هذه البنية الموحّدة:
date_of_birthfull_nameidentification_number
الأسعار واتفاقيات مستوى الخدمة
تُحتسب استعلامات EPIC الهندي (تسجيل الناخبين) (ECI) فقط عندما يتلقى Didit نتيجة حاسمة من مصدر التحقق.- السعر لكل استدعاء: $0.25 USD.
- الفوترة: لكل استعلام ناجح. لا تُحتسب عليك تكلفة عندما يكون السجل غير قابل للوصول، أو عندما تكون الحقول المطلوبة مفقودة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
- زمن الاستجابة: عادةً p95 أقل من 2 ثانية.
- التوفر: 99.9% لكل ربع سنة من جهة Didit؛ ويختلف توفر المصدر التابع بحسب الدولة ومجموعة البيانات.
مواصلة القراءة
آخر تعديل في ٧ نوفمبر ٢٠٢٦