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"
}
}
]
}
Проверка по базам данных
Проверка Zambia NRC (налоговый реестр): API верификации
Zambia 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/, чтобы вы могли сверить переданные данные с авторитетным источником и получить нормализованные результаты сопоставления.
Покрытие
- Покрытие: –
- Страна: Замбия
- ID сервиса:
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"
обязательно
Массив, содержащий ID этого сервиса. Привязка к сервису ограничивает запрос этой конкретной базой данных.Пример:
zmb_national_idstring
по умолчанию:"123456/78/9"
обязательно
Национальный идентификационный номер для этого сервиса.Пример:
123456/78/9string
по умолчанию:"John"
обязательно
Имя для проверки.Пример:
Johnstring
по умолчанию:"Doe"
обязательно
Фамилия для проверки.Пример:
Doestring
по умолчанию:"user-1234"
Ваш стабильный идентификатор этого человека, например внутренний ID пользователя. 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
Цены и SLA
Запросы к реестру NRC (налоговому реестру) Замбии тарифицируются только тогда, когда Didit получает окончательный результат от источника проверки.- Цена за вызов: $0.20 USD.
- Тарификация: за успешный запрос. Плата не взимается, если реестр недоступен, если не хватает обязательных полей или если запрос отклонён до обращения к источнику.
- Задержка: типичный p95 < 2 с.
- Доступность: 99.9% в квартал со стороны Didit; доступность источника данных зависит от страны и набора данных.
Читайте также
Последнее изменение 7 ноября 2026 г.