didit-database-validation について
政府機関などの公的な登録情報と個人データを照合する Didit API のスキルです。項目ごとの一致結果とサービス別の判定を返し、複数の国・地域の本人確認に対応します。
主な機能
- 01個人データと登録情報の照合
- 02項目ごとの一致結果の返却
- 03各国の本人確認サービスの実行
- 04セルフィーを使う生体認証への対応
活用シーン
- 01本人に属さない識別番号の検出
- 02登録時に提出された本人情報の確認
MCP 対応
このスキルは Didit Database Validation API の呼び出し方法を説明します。MCP サーバーや MCP 専用インターフェースについては記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ didit-protocol/ skills --skill didit-database-validationインストール後、Claude Code で/didit-database-validationを入力して読み込まれたか確認します。
同梱ファイルscripts/validate_database.py
詳細
Didit データベース検証 API
概要
国の公的機関(住民登録機関、税務当局、選挙人名簿、または生体認証登録機関)のデータと個人情報を照合し、項目ごとの比較結果、サービスごとの結果コード、および登録記録を返します。架空の身元情報や、本人に紐づいていないID番号の検出に利用できます。
料金: サービスごとに $0.05(ドミニカ共和国の dom_cedula)から、照会1件あたり $7.00 です。ラテンアメリカの国民IDサービスの多くは $0.20 です(照会に回答したサービスごとに1回課金されます。該当なしや見つからないという回答も含みます。400 による拒否、および情報源から回答がなかったサービスは無料です。単独の呼び出しに無料枠はありません)。これらの価格は2026年11月1日までの標準価格です。同日、Didit の料金体系が変更され、月500回の無料チェックは月 $10 分の無料クレジットになります。最新の価格はdidit.me/pricingをご確認ください。
主な制約:
issuing_stateは ISO 3166-1 の alpha-3(BRA、PER、ARG)です。alpha-2 のコード(BR)を指定すると、400「Invalid issuing state」が返されます。- 各国では1つ以上のサービス(
service_id)が提供されています。servicesを指定しない場合、デフォルトのサービスが1つだけ実行されます。スペイン、ケニア、ザンビア、およびラテンアメリカ以外のほとんどのサービスにはデフォルトがありません。servicesで指定してください。 - 必須フィールドは選択したサービスによって異なります。フィールドが欠けている場合や形式が不正な場合、登録機関への照会前に
400が返されます(課金されません)。 - JSON を送信するか、サービスで
selfieが必要な場合はmultipart/form-dataを送信します(アルゼンチンのarg_renaper、パナマのpan_cedula_sib、その他の生体認証サービス)。 - 項目ごとの結果:
full_match、partial_match、no_match。全体のstatus:Approved、Declined、In Review。
対応範囲: 2026-10-12 時点の公開カタログには、45か国の有効なサービス123件と、グローバル(GLB)グループが掲載されていました。内訳は、ラテンアメリカ17か国、スペイン、南アフリカ、ケニア、ザンビア、ナイジェリア、およびヨーロッパ、北米、アジア太平洋地域の本人確認、信用、居住情報、電話番号のデータセットです。API キーなしで、最新の一覧を確認できます。
GET https://verification.didit.me/v1/organization/database-validation-countries/
次の形式で返されます:{ "<ISO3>": { "country_iso3", "country_name", "region", "services": [ { "service_id", "service_name", "coverage", "default_price_usd", "required_fields", "requires_any_fields", "optional_fields", "requires_consent", "requires_onboarding", "supports_selfie", ... } ] } }。requires_onboarding: true のサービスは、Didit サポートが組織に対して有効化するまで 400 を返します。
API リファレンス: https://docs.didit.me/standalone-apis/database-validation 機能ガイド: https://docs.didit.me/core-technology/database-validation/overview 対応国: https://docs.didit.me/core-technology/database-validation/database-validation-supported-countries サービスごとの料金: https://docs.didit.me/getting-started/database-validation-pricing
認証
すべてのリクエストには x-api-key ヘッダーが必要です。Didit Business Console の Developers > API keys にあるアプリケーションの API キーを使用するか、アカウントとキーをプログラムで作成してください(「利用開始」を参照)。カスタムアクセス権を持つ名前付きキーで単独チェックを実行するには、Sessions の書き込み権限が必要です。一部のワークフローに限定されたキーや、承認済みセッションのみに限定されたキーでは実行できません。
利用開始(まだアカウントをお持ちでない場合)
Didit API キーをお持ちでない場合、API を2回呼び出すだけで作成できます。
- 登録:
POST https://apx.didit.me/auth/v2/programmatic/register/に{"email": "[email protected]", "password": "MyStr0ng!Pass"}を送信します。 - メールを確認: 6文字の認証コードを確認します。
- 認証:
POST https://apx.didit.me/auth/v2/programmatic/verify-email/に{"email": "[email protected]", "code": "A3K9F2"}を送信します。キーはレスポンス内のapplication.api_keyにあります。
クレジットの追加: 残高を確認するには GET /v3/billing/balance/、Stripe のチェックアウトリンクを取得するには POST /v3/billing/top-up/ に {"amount_in_dollars": 50} を送信します。
プラットフォーム管理(ワークフロー、セッション、ユーザー、請求)の詳細については、didit-verification-management スキルをご覧ください。
エンドポイント
POST https://verification.didit.me/v3/database-validation/
ヘッダー
| ヘッダー | 値 | 必須 |
|---|---|---|
x-api-key | API キー | はい |
Content-Type | application/json、または selfie の送信時は multipart/form-data | はい |
本文
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
issuing_state | string | はい | 登録機関の ISO 3166-1 alpha-3 国コード(BRA、ESP、COL) |
services | array of strings | いいえ | 実行する service_id(例:["bra_cpf"])。カンマ区切りまたは JSON エンコードされた文字列も受け付けます。省略または空の場合は、デフォルトのサービスが1つだけ実行されます(表を参照)。指定すると、レスポンスに services_used と match_score が追加されます。各 ID は issuing_state で有効である必要があります |
identification_number | string | いいえ | 国ごとの番号フィールド(表を参照)に値を入力するショートカットです。ARG、BOL、BRA、CHL、COL、CRI、DOM、ECU、GTM、HND、MEX、PAN、PER、PRY、SLV、URY、VEN に対応します。明示的に指定されたフィールドを上書きすることはありません。それ以外の国では無視されます |
document_number | string | 条件による | ARG、BOL、GTM、HND、PRY、SLV、VEN の番号フィールド |
personal_number | string | 条件による | CHL、COL、CRI、DOM、ECU、MEX、PAN、PER、URY の番号フィールド |
tax_number | string | 条件による | BRA の番号フィールド(CPF) |
national_id | string | 条件による | KEN、ZMB、ZAF およびその他の市場のサービスにおける国民 ID 番号。ESP の esp_dni では任意です |
first_name / last_name | string | 条件による | 照合する氏名。一部のサービスでは必須です |
middle_name / full_name | string | いいえ | 一部のサービスで使用されます(一部では姓・名の代わりに full_name を使用します) |
date_of_birth | string | 条件による | YYYY-MM-DD |
date_of_issue | string | 条件による | 書類の発行日 YYYY-MM-DD。COL の col_cedula では必須です |
expiration_date | string | いいえ | 書類の有効期限 YYYY-MM-DD |
document_type | string | いいえ | P、DL、ID、RP、SSC、HIC、WP、TC、VISA、PSC、BC、OTHER |
gender | string | 条件による | M、F、X のいずれか。arg_renaper と arg_renaper_data では必須です |
nationality | string | 条件による | ISO 3166-1 alpha-3。COL の col_migracion では必須です |
address | object or string | 条件による | {"street_1", "street_2", "city", "region", "postal_code", "country"} または住所全体を1行で指定します。住所を使用するサービスでは必須です(ESP の esp_dni では、少なくとも番地と郵便番号が必要です) |
address_element_1 to address_element_5, postal_code | string | いいえ | 個別に送信する住所の項目:通り、建物・部屋番号、市区町村、州・地域、郵便番号(postal_code は element 5 の別名です) |
selfie | file | 条件による | マルチパートのみ。jpg、jpeg、png、webp、最大 2 MB。生体認証サービスでは必須です |
consent | boolean | 条件による | デフォルトは false です。requires_consent を持つサービス(例:esp_dni)では true にする必要があります。そうしない場合は services_requiring_consent とともに 400 が返されます |
partial_match_action | string | いいえ | DECLINE または NO_ACTION(デフォルトは NO_ACTION:部分一致は Approved のままです) |
no_match_action | string | いいえ | DECLINE(デフォルト)または NO_ACTION |
save_api_request | boolean | いいえ | デフォルトは true です。セッションとして保存され(Business Console、request_id を指定した GET /v3/session/{sessionId}/decision/、status.updated Webhook)、validations はサービスごとの配列になります。false の場合は何も保存されず、validations は統合されたフィールドマップになります |
vendor_data | string | いいえ | ユーザーを識別するための値。レスポンスにそのまま返されます |
metadata | object | いいえ | 保存され、レスポンスにそのまま返される自由形式の JSON |
validation_type | string | いいえ | 非推奨で、無視されます |
各サービス固有のその他の識別子:passport_number、passport_expiration_date、passport_issue_country、passport_file_number、driver_license_number、driver_license_card_number、driver_license_state、driver_license_version、medicare_card_number、immi_card_number、immi_card_expiry_date、citizenship_certificate_number、birth_registration_number、birth_registration_date、birth_registration_state、marriage_certificate_number、change_of_name_certificate_number、first_partner_name、last_partner_name、voter_id、epic_card、pan、cic、identificador_ciudadano、ocr、voter_number、emission_number、bvn、bank_card_number、ssn、phone、landline、email、country_of_residence。カタログの required_fields / requires_any_fields に、サービスが必要とする項目が記載されています。 |
サンドボックス: サンドボックス API キーではレジストリへの呼び出しと課金がスキップされ、固定の full_match レスポンスが返されます(常に services_used と match_score: 100 が含まれるため、実環境のレスポンス形式のテストには使用しないでください)。
例
import requests
response = requests.post(
"https://verification.didit.me/v3/database-validation/",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"issuing_state": "BRA",
"services": ["bra_cpf"],
"tax_number": "12345678900",
"date_of_birth": "1980-01-01",
"first_name": "John",
"last_name": "Doe",
"vendor_data": "user-1234",
},
timeout=60,
)
print(response.status_code, response.json())
// Biometric service: multipart with a selfie (Argentina RENAPER)
const form = new FormData();
form.append("issuing_state", "ARG");
form.append("services", "arg_renaper");
form.append("document_number", "12345678");
form.append("gender", "F");
form.append("first_name", "Jane");
form.append("last_name", "Doe");
form.append("selfie", selfieFile); // jpg/jpeg/png/webp, max 2 MB
const response = await fetch("https://verification.didit.me/v3/database-validation/", {
method: "POST",
headers: { "x-api-key": "YOUR_API_KEY" },
body: form,
});
const data = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${JSON.stringify(data)}`);
console.log(data.database_validation.status, data.database_validation.match_type);
レスポンス(200 OK)
{
"request_id": "b3e7c1a2-9d4f-4f0b-8a6c-5e2d1f0a9b3e",
"database_validation": {
"status": "Approved",
"issuing_state": "BRA",
"validation_type": "one_by_one",
"screened_data": {
"tax_number": "12345678900",
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1980-01-01"
},
"match_type": "full_match",
"validations": [
{
"service_id": "bra_cpf",
"service_name": "Brazil - CPF status check",
"validation": {
"full_name": "full_match",
"date_of_birth": "full_match",
"identification_number": "full_match"
},
"outcome_code": "MATCH",
"outcome_detail": "200",
"source_data": {
"identification_number": "12345678900",
"first_name": "JOHN",
"last_name": "DOE",
"date_of_birth": "1980-01-01",
"lgpd_minor": false,
"minor_under_16": false,
"minor_under_18": false
}
}
],
"warnings": [],
"services_used": ["bra_cpf"],
"match_score": 1.0
},
"vendor_data": "user-1234",
"metadata": null,
"created_at": "2026-10-12T10:30:00.000000+00:00"
}
save_api_request=false の場合、代わりに validations は統合されたマップになります。例:{"full_name": "full_match", "date_of_birth": "full_match", "identification_number": "full_match"}。
ステータス値と処理方法
| ステータス | 意味 | アクション |
|---|---|---|
"Approved" | full_match、またはアクションが NO_ACTION の partial_match / no_match(デフォルトでは partial match は NO_ACTION) | 処理を続行します。warnings と errors も必ず確認してください |
"Declined" | 警告が DECLINE と判定された状態:no_match または失効した書類(no_match_action のデフォルトは DECLINE)、あるいは partial_match_action=DECLINE の部分一致 | 本人確認データがレジストリと一致しません |
"In Review" | COULD_NOT_PERFORM_DATABASE_VALIDATION のみ:サービスから応答はあったものの、確認できた項目がない状態(例:唯一のサービスが INCONCLUSIVE または REGISTRY_UNAVAILABLE を返した場合) | 手動で確認するか、後でもう一度お試しください |
却下は審査中より優先されます。複数サービスへのリクエストでは、あるサービスでは Approved でも、別のサービスでは失敗していることがあります。必ず errors[] と各 outcome_code を確認してください。
エラーレスポンス
| コード | 意味 | 対応 |
|---|---|---|
400 | リクエストが無効です | レスポンスボディのフィールドエラーを確認してください |
401 | API キーの有効期限が切れています | Developers > API keys でキーをローテーションするか、新しいキーを作成してください |
403 | API キーがない、間違っている、または取り消されている、エンドポイントにアクセスできないスコープ付きキーを使用している、キーの IP 許可リスト外からリクエストしている、またはクレジットが不足しています | detail または error のメッセージを確認してください。x-api-key ヘッダーまたはキーのアクセス権を修正するか、クレジットを追加してください |
429 | レート制限:キーごとに 1 分あたり POST/PATCH/DELETE リクエストは 300 件、GET リクエストは 600 件までです | Retry-After の秒数だけ待ってから再試行してください |
502 | 選択したサービスから利用可能な結果が返されませんでした。ボディ:error と validation_errors[](service_id、code(例:empty_provider_response)、message、retryable: true)。課金されません | 後で再試行してください。save_api_request=true の場合、試行はセッションとして記録されます |
このエンドポイントの 400 ボディ(課金されません):
{"error": ["Invalid issuing state. Valid options are: ARE, ARG, ..."]}:issuing_stateが間違っているか、アルファベット 2 文字のコードです{"error": ["No database validation services configured for ESP."]}:その国のデフォルトサービスがありません。servicesを指定してください{"error": ["Missing required fields: tax_number (or use 'identification_number' ...)"], "fields_required_by": {"tax_number": ["bra_cpf"]}}:同じ種類の問題について、any_field_required_by、field_dependencies_required_by、address_fields_required_byも返されます{"services": [...]}:不明なサービス ID、その国で利用可能になっていないサービス、またはオンボーディングが必要なサービス(requires_onboarding)です{"consent": [...], "services_requiring_consent": [...]}:consent: trueを送信してください{"tax_number": ["Invalid tax number for BRA: Brazilian CPF (exactly 11 digits). ..."]}またはinvalid_fields_by_service:形式ルールに違反しています{"error": "...", "validation_errors": [{"code": "provider_rejected_input", "retryable": false, ...}]}:すべてのソースが送信されたデータを拒否しました。データを修正してください。同じ値で再試行しても成功しません
クレジットチェックでは、選択したサービスの料金の合計が確認され、レジストリへの問い合わせの前に実行されます。クレジット不足時の 403 ボディは {"error": "You don't have enough credits to perform this request. ..."} です。
レスポンスフィールドのリファレンス
| フィールド | 型 | 説明 |
|---|---|---|
request_id | uuid | save_api_request=true の場合はセッション ID、それ以外の場合は一時的な相関 ID |
database_validation.status | string | Approved、Declined、または In Review |
database_validation.issuing_state | string | alpha-3 の国コードのエコー |
database_validation.validation_type | string | one_by_one、または 2 件以上のサービスで完全一致した場合は two_by_two |
database_validation.screened_data | object | サービスに送信された入力(日付は YYYY-MM-DD、selfie は一時 URL、同意が得られた場合は consent_obtained: true) |
database_validation.match_type | string/null | サービス全体での full_match、partial_match、または no_match。結果のみを返すサービスでは null |
database_validation.validations | array or object | サービスごとの情報:service_id、service_name、validation(フィールドと full_match/partial_match/no_match の対応)、outcome_code、outcome_detail、source_data(登録情報)。save_api_request=false の場合は統合マップ |
database_validation.warnings | array | {feature, risk, additional_data, log_type, short_description, long_description}。問題のない完全一致では空 |
database_validation.errors | array | 一部のサービスで失敗した場合のみ:service_id、code、message、retryable。これらのサービスには課金されません |
database_validation.services_used | array | 結果を返したサービス(リクエストで services を送信した場合のみ) |
database_validation.match_score | number | 試行したサービスのうち完全一致した割合(0.0~1.0。リクエストで services を送信した場合のみ) |
vendor_data / metadata | string/object | 指定した値のエコー |
created_at | string | ISO 8601 形式の UTC タイムスタンプ |
outcome_code の値: MATCH、PARTIAL_MATCH、NO_MATCH(確定的な不一致)、DOCUMENT_NOT_FOUND(番号が登録情報に存在しない)、INVALID_DOCUMENT_FORMAT / INVALID_INPUT(登録機関がデータを拒否)、MINOR_BLOCKED、DECEASED、BIOMETRIC_NO_MATCH(顔が一致しない)、BIOMETRIC_IMAGE_UNUSABLE(セルフィーを撮り直してください)、INCONCLUSIVE(要確認。不一致ではありません)、DOCUMENT_SUPERSEDED(新しい版の書類が存在)、REGISTRY_UNAVAILABLE / REGISTRY_ERROR(情報源の障害。課金されません)。
照合ロジック
| ルール | 動作 |
|---|---|
| 氏名 | 氏名の各部分をあいまい照合します(軽微な誤字があっても一致します:「Christophel」と「Christopher」は完全一致、「Chris」は一致しません) |
| 生年月日、ID 番号 | 完全一致のみ |
match_type | いずれかのサービスが full_match を返した場合は full_match、それ以外でいずれかのサービスが partial_match を返した場合は partial_match、それ以外は no_match |
validation_type | 2 つ以上の異なるサービスで完全一致した場合は two_by_two、それ以外は one_by_one。2x2 専用の料金はありません。各サービスに個別の料金が課金されます |
| 決定的なフィールド | サービスは、自身が保持するフィールドと送信されたフィールドのみを比較します。必須フィールドが常に比較対象になるとは限りません |
警告タグ
| タグ | 条件 | 効果 |
|---|---|---|
DATABASE_VALIDATION_NO_MATCH | match_type が no_match、またはサービスが項目の照合なしで確定的な否定結果(例:DOCUMENT_NOT_FOUND、DECEASED)を返した場合 | no_match_action(既定値は DECLINE) |
DATABASE_VALIDATION_PARTIAL_MATCH | match_type が partial_match の場合 | partial_match_action(既定値は NO_ACTION:information、ステータスは Approved のまま) |
DATABASE_VALIDATION_DOCUMENT_SUPERSEDED | サービスが DOCUMENT_SUPERSEDED を返した場合:人物は一致したものの、より新しい版の書類が存在します(match_type は full_match の場合もあります) | no_match_action に従います |
COULD_NOT_PERFORM_DATABASE_VALIDATION | サービスは実行されましたが、確定には至らなかった場合:結論の出ない回答、利用不可または失敗した情報源、あるいは送信されたデータを使用できなかった登録機関などです。additional_data にサービス名が記載されます。フィールドの欠落や無効な値はここには該当せず、400 が返されます | 常に In Review(log_type: warning) |
DATABASE_VALIDATION_NOT_APPLICABLE | ワークフローセッションのみ(書類にサービスが必要とする識別子がありません) | このエンドポイントでは生成されません |
log_type はアクションを反映します。DECLINE の場合は error、NO_ACTION の場合は information です。不足データの入力後に自動で再実行する機能は、ワークフローセッションにのみあり、このエンドポイントにはありません。
対応国
公開カタログおよび料金表に基づく主な国(2026-10-12)。services を省略した場合に実行されるサービスが「デフォルト」です。
issuing_state | デフォルトサービス | 必須フィールド | 番号の形式 | 対応率 | 料金 | その他のサービス |
|---|---|---|---|---|---|---|
ARG | arg_renaper(生体認証) | document_number、selfie、gender | DNI、7~8 桁、M/F の接頭辞は任意 | - | $0.20 | arg_renaper_data(document_number、gender、selfie 不要、$0.20);arg_citizens $1.90、arg_credit_bureau $2.15 |
BOL | bol_cedula | document_number、date_of_birth | CI、6~10 桁 | 90~95% | $0.20 | - |
BRA | bra_cpf | tax_number、date_of_birth | CPF、ちょうど 11 桁 | 約100% | $0.20 | ほかに 9 件。例:bra_cpf_facial(selfie、同意、$0.45)、bra_unico_idcloud(selfie、同意、$0.20)、bra_death_check、bra_tax_registration $0.15 |
CHL | chl_rut | personal_number | RUT、例:12345678-9 | - | $0.20 | - |
COL | col_cedula | personal_number、date_of_issue | Cedula、6~10 桁 | 90~95% | $0.20 | col_migracion(personal_number、date_of_birth、nationality、$1.20) |
CRI | cri_cedula | personal_number | Cedula、9~12 桁 | 90~95% | $0.20 | - |
DOM | dom_cedula | personal_number | Cedula、ちょうど 11 桁 | - | $0.05 | - |
ECU | ecu_cedula | personal_number | Cedula、ちょうど 10 桁 | - | $0.20 | - |
ESP | なし:services: ["esp_dni"] と consent: true を送信 | first_name、last_name、date_of_birth、address(通り名+郵便番号) | 番号フィールドなし。任意の national_id(DNI/NIE)も照合されます | 約75% | $1.26 | - |
GTM | gtm_dpi | document_number、date_of_birth | DPI、ちょうど 13 桁 | 90~95% | $0.20 | gtm_dpi_facial(document_number、selfie、同意、$0.35) |
HND | hnd_dni | document_number | DNI、ちょうど 13 桁 | 90~95% | $0.20 | - |
MEX | mex_curp | personal_number | CURP、ちょうど 18 文字 | 約100% | $0.20 | mex_ine_vigencia(INE 認証情報:cic、identificador_ciudadano、ocr、または voter_number + emission_number、$0.20) |
PAN | pan_cedula_sib(生体認証) | personal_number、selfie | Cedula、5~20 文字 | - | $0.75 | pan_cedula_sib_plus(同じフィールド、$1.50) |
PER | per_dni | personal_number | DNI、ちょうど 8 桁 | - | $0.20 | per_tax_registration(first_name、last_name、date_of_birth、personal_number、$1.75) |
PRY | pry_cedula | document_number | CI、6~10 桁 | 90~95% | $0.20 | - |
SLV | slv_dui | document_number、date_of_birth | DUI、ちょうど 9 桁 | 90~95% | $0.20 | - |
URY | ury_cedula | personal_number、date_of_birth | CI、7~9 桁 | 90~95% | $0.20 | - |
VEN | ven_cedula | document_number | Cedula、7~10 桁、V/E の接頭辞は任意 | 90~95% | $0.20 | - |
KEN | なし:ken_national_id | first_name、last_name、date_of_birth、national_id | - | 約90% | $0.65 | - |
ZMB | なし:zmb_national_id | national_id、first_name、last_name | - | - | $0.20 | - |
ZAF | zaf_africa_national_id | first_name、last_name、date_of_birth、national_id | - | 約100% | $1.10 | ほかに 12 件(運転免許証、銀行口座名義人、企業登記、不正防止など) |
その他の国(オーストラリア、オーストリア、カナダ、中国、デンマーク、フィンランド、フランス、ドイツ、インド、インドネシア、イタリア、カンボジア、マレーシア、オランダ、ニュージーランド、ナイジェリア、ノルウェー、フィリピン、シンガポール、スウェーデン、スイス、タイ、英国、米国)および GLB グループについては、カタログを確認し、必ず services を送信してください。ほとんどの国にはデフォルトサービスがありません。任意フィールド(通常は first_name、last_name)を指定すると、サービスが対応している場合は氏名の照合が追加されます。
一般的なワークフロー
ID 書類のデータを検証する
1. POST /v3/id-verification/ -> id_verification.issuing_state (alpha-3), document_number,
personal_number, first_name, last_name, date_of_birth, gender, date_of_issue
(see the didit-id-document-verification skill)
2. Look up the country in the table (or the catalog) and pick services
3. POST /v3/database-validation/ with issuing_state, services and the required fields
(identification_number fills the country's number field)
4. Approved -> data confirmed by the registry
Declined -> DATABASE_VALIDATION_NO_MATCH / _DOCUMENT_SUPERSEDED: do not trust the identity data
In Review -> COULD_NOT_PERFORM_DATABASE_VALIDATION: review or retry later
502 -> no service answered (not billed): retry later
スペインの DNI/NIE
{
"issuing_state": "ESP",
"services": ["esp_dni"],
"consent": true,
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1990-01-01",
"address": {"street_1": "Calle Mayor 10", "city": "Madrid", "postal_code": "28013", "country": "ES"}
}
生体認証による登録情報の照合(アルゼンチン、パナマ)
selfie(最大 2 MB)を含む multipart/form-data を送信します。arg_renaper では document_number と gender も必要です。pan_cedula_sib では personal_number が必要です。BIOMETRIC_NO_MATCH は実際に顔が一致しないことを示します。BIOMETRIC_IMAGE_UNUSABLE はセルフィーを撮り直す必要があることを示します。
保存済みの結果を取得する
save_api_request=true(デフォルト)の場合、GET /v3/session/{request_id}/decision/ は database_validations[] に結果を返します。
ユーティリティスクリプト
validate_database.py:コマンドラインから政府のデータベースと本人確認データを照合します。JSON レスポンスに続いて、ステータス、照合タイプ、サービスごとの結果、警告、エラーを出力します。
# Requires: pip install requests
export DIDIT_API_KEY="your_api_key"
# issuing_state is ISO alpha-3. Use the number field the country needs (see the table) or --identification-number.
python scripts/validate_database.py --issuing-state PER --personal-number 12345678 --first-name Carlos --last-name Garcia
python scripts/validate_database.py --issuing-state BRA --tax-number 12345678900 --dob 1980-01-01 --services bra_cpf
python scripts/validate_database.py --issuing-state MEX --identification-number GARC850315HDFRRL09
python scripts/validate_database.py --issuing-state COL --personal-number 1234567890 --date-of-issue 2015-06-20
python scripts/validate_database.py --issuing-state ARG --document-number 12345678 --gender F --selfie selfie.jpg
python scripts/validate_database.py --issuing-state ESP --services esp_dni --consent --first-name John --last-name Doe \
--dob 1990-01-01 --address '{"street_1": "Calle Mayor 10", "city": "Madrid", "postal_code": "28013", "country": "ES"}'