अवलोकन
हर सुविधा-वार रिपोर्टservice-didit-verification में परिभाषित V3 सीरियलाइज़र संरचना का पालन करती है। यही ऑब्जेक्ट तीन जगहों पर दिखता है, इसलिए यहाँ दिखने वाला स्कीमा इन सभी के लिए एकमात्र स्रोत है:
GET /v3/session/{sessionId}/decision/: हर सुविधा एक बहुवचन ऐरे के रूप में लौटाई जाती है (id_verifications[],nfc_verifications[],liveness_checks[],face_matches[],poa_verifications[],phone_verifications[],email_verifications[],aml_screenings[],ip_analyses[],database_validations[],questionnaire_responses[],signatures[],bank_verifications[](देखें बैंक सत्यापन विधियाँ), और KYB के समकक्षregistry_checks[],document_verifications[],key_people_checks[])।- Webhook payloads (
status.updated,data.updated):decisionएनवेलप के भीतर वही संरचना। - स्टैंडअलोन API: एकल-ऑब्जेक्ट रिस्पॉन्स (चेहरा खोज, आयु अनुमान, बायोमेट्रिक प्रमाणीकरण) वही फ़ील्ड सेट इस्तेमाल करते हैं।
V3 ने मल्टी-इंस्टेंस वर्कफ़्लो पेश किए: हर सुविधा ऑब्जेक्ट में एक
node_id होता है जो रिपोर्ट को उस वर्कफ़्लो ग्राफ़ नोड से जोड़ता है जिसने उसे बनाया। V2 एंडपॉइंट (एकवचन kyc, face, aml, आदि) बैकवर्ड-कम्पैटिबल बने रहते हैं, लेकिन केवल पहला इंस्टेंस लौटाते हैं।सामान्य फ़ील्ड
हर रिपोर्ट ऑब्जेक्ट में ये फ़ील्ड होते हैं:| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
status | string | सुविधा-स्तर की लाइफ़साइकल स्थिति, Status enum के मानों में से एक। स्रोत: common/config/choices.py:FeatureStatusChoices (पंक्तियाँ 343-348)। मूल सत्र की शीर्ष-स्तरीय status व्यापक सत्र enum (StatusChoices, पंक्तियाँ 106-117) का उपयोग करती है। |
node_id | string | null | वर्कफ़्लो ग्राफ़ नोड का पहचानकर्ता। V3 मल्टी-इंस्टेंस वर्कफ़्लो के लिए भरा जाता है; लेगेसी एकल-सुविधा सत्रों के लिए null। |
warnings | चेतावनी ऑब्जेक्ट का ऐरे | इस सुविधा और node_id के अनुसार फ़िल्टर किए गए जोखिम संकेत। Session.get_logs(...) (sessions/models/session.py:1611) द्वारा लौटाए जाते हैं। |
portrait_image, front_image, document_file, …) सीमित वैधता अवधि वाले प्रीसाइंड URL हैं। URL को सहेजकर न रखें; उन्हें तुरंत डाउनलोड करें। उदाहरणों में इन्हें https://<media-host>/... के रूप में दिखाया गया है।
चेतावनी ऑब्जेक्ट
हरwarnings[] ऐरे में यह लौटाया जाता है। स्कीमा logs/serializers/log.py:8-65 (LogV3Serializer) से है।
| फ़ील्ड | प्रकार | शून्य-योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
feature | string (enum) | नहीं | वह सुविधा जिसने चेतावनी जारी की। मान LogWarningChoices (common/config/choices.py:190-204) से हैं: ID_VERIFICATION, NFC, LIVENESS, FACEMATCH, PROOF_OF_ADDRESS, PHONE, EMAIL, AML, LOCATION, DATABASE_VALIDATION, QUESTIONNAIRE, KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE। | "ID_VERIFICATION" |
risk | string | नहीं | स्थिर जोखिम कोड (जैसे DOCUMENT_EXPIRED, LOW_LIVENESS_SCORE)। मान logs/choices.py:RiskChoices से हैं। विवरण तालिकाओं में यह कुंजी के रूप में इस्तेमाल होता है। | "DOCUMENT_EXPIRED" |
additional_data | object | null | हाँ | जोखिम-विशिष्ट संदर्भ (जैसे स्कोर थ्रेशोल्ड, मिलान किए गए फ़ील्ड)। आकार जोखिम कोड के अनुसार बदलता है। | { "score": 42.1, "threshold": 70 } |
log_type | string (enum) | नहीं | इनमें से एक: error, warning, information। LogTypeChoices (common/config/choices.py:207-210) से। | "error" |
short_description | string | नहीं | जोखिम का मानव-पठनीय लेबल। logs/choices.py:RISK_SHORT_DESCRIPTIONS से। | "Document expired" |
long_description | string | नहीं | अंतिम उपयोगकर्ता को दिखाई जाने वाली सतहों के लिए उपयुक्त लंबा, मानव-पठनीय स्पष्टीकरण। logs/choices.py:RISK_LONG_DESCRIPTIONS से। | "The document's expiration date has passed, rendering it no longer valid for use." |
node_id | string | null | हाँ | वह वर्कफ़्लो ग्राफ़ नोड जिस पर चेतावनी उठाई गई। लेगेसी V2 लॉग के लिए, जिनमें node_id नहीं है, null। | "first_id_verification" |
{
"feature": "ID_VERIFICATION",
"risk": "DOCUMENT_EXPIRED",
"additional_data": null,
"log_type": "error",
"short_description": "Document expired",
"long_description": "The document's expiration date has passed, rendering it no longer valid for use.",
"node_id": "first_id_verification"
}
रिपोर्ट ऑब्जेक्ट
बाकी सेक्शन हर सुविधा के लिए अलग रिपोर्ट ऑब्जेक्ट का वर्णन करते हैं। H3 हेडिंग का टेक्स्ट जानबूझकर स्थिर रखा गया है, ताकि अन्य दस्तावेज़ सीधे उस तक लिंक कर सकें।पहचान सत्यापन
यह हर उस KYC/ID दस्तावेज़ के लिए लौटाया जाता है जो उपयोगकर्ता जमा करता है। यहGET /v3/session/{sessionId}/decision/ में id_verifications[] के रूप में दिखता है, और V2 रिस्पॉन्स में kyc फ़ील्ड के अंदर। स्रोत: kyc/serializers/kyc.py:383-414 (IDVerificationV3Serializer, जो kyc/serializers/kyc.py:320-380 पर IDVerificationV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्थिति enum। | "Approved" |
document_type | string | हाँ | मानव-पठनीय दस्तावेज़ श्रेणी (Passport, Identity Card, Driver's License, Residence Permit, Health Insurance Card, Tax Card, Social Security Card, Work Permit, Visa, Public Service Card, Birth Certificate, Firearm License, Other)। स्रोत: DOC_TYPE_MAPPING (common/config/choices.py:1275-1289)। | "Passport" |
document_subtype | string | हाँ | Didit की दस्तावेज़ रजिस्ट्री से दस्तावेज़ उप-प्रकार कोड, जो वर्कफ़्लो की दस्तावेज़ सेटिंग्स द्वारा स्वीकार किए गए दस्तावेज़ों तक सीमित है। क्षेत्र-विशिष्ट दस्तावेज़ों में क्षेत्र शामिल होता है। पूरी कोड सूची: दस्तावेज़ उप-प्रकार। | "QUEENSLAND_DRIVER_LICENSE_GENERIC" |
document_number | string | हाँ | OCR द्वारा निकाला गया दस्तावेज़ नंबर। | "AB1234567" |
personal_number | string | हाँ | OCR द्वारा निकाला गया व्यक्तिगत/राष्ट्रीय पहचानकर्ता। | "99999999R" |
portrait_image | string (URL) | हाँ | चेहरे के क्रॉप की प्री-साइन्ड URL। | "https://<media-host>/.../portrait.jpg?..." |
front_image | string (URL) | हाँ | साफ़ किए गए दस्तावेज़ के फ्रंट की प्री-साइन्ड URL। | "https://<media-host>/.../front.jpg?..." |
front_video | string (URL) | हाँ | फ्रंट कैप्चर वीडियो की प्री-साइन्ड URL (उपलब्ध होने पर)। | "https://<media-host>/.../front.mp4?..." |
back_image | string (URL) | हाँ | साफ़ किए गए दस्तावेज़ के बैक की प्री-साइन्ड URL। | "https://<media-host>/.../back.jpg?..." |
back_video | string (URL) | हाँ | बैक कैप्चर वीडियो की प्री-साइन्ड URL। | null |
full_front_image | string (URL) | हाँ | बिना कटे (पूरे फ़्रेम वाला) फ्रंट कैप्चर। | "https://<media-host>/.../full_front.jpg?..." |
full_back_image | string (URL) | हाँ | बिना कटे (पूरे फ़्रेम वाला) बैक कैप्चर। | null |
front_image_camera_front | string (URL) | हाँ | दस्तावेज़ के फ्रंट के साथ उसी समय लिया गया फ्रंट कैमरा इमेज। | null |
back_image_camera_front | string (URL) | हाँ | दस्तावेज़ के बैक के साथ उसी समय लिया गया फ्रंट कैमरा इमेज। | null |
front_image_camera_front_face_match_score | float (0-100) | हाँ | दस्तावेज़ के चेहरे और फ्रंट कैमरा कैप्चर के बीच समानता। | null |
back_image_camera_front_face_match_score | float (0-100) | हाँ | ऊपर जैसा ही, लेकिन बैक कैप्चर के लिए। | null |
document_selfie_face_matches | array | हाँ | दस्तावेज़ कैप्चर के दौरान लिए गए सेल्फ़ी से मेल खाने वाले पिछले सत्र या चेहरा ब्लॉकलिस्ट प्रविष्टियाँ। वही प्रविष्टि प्रारूप जो liveness_checks[].matches का है। खोज न चलने पर null, और कोई मिलान न होने पर []। | null |
front_image_quality_score | object | हाँ | फ्रंट इमेज के गुणवत्ता मापदंड: 0-100 के स्कोर (focus_score, brightness_score, resolution_score, overall_score), साथ ही brightness_issue (ok, too_dark, too_bright) और is_document_fully_visible (boolean)। | { "focus_score": 91.0, "overall_score": 88.5 } |
back_image_quality_score | object | हाँ | front_image_quality_score जैसी ही संरचना। | null |
date_of_birth | string (YYYY-MM-DD) | हाँ | OCR द्वारा निकाली गई जन्म तिथि (DOB)। | "1990-05-12" |
age | integer | हाँ | निष्कर्षण के समय वर्षों में गणना की गई आयु। | 35 |
expiration_date | string (YYYY-MM-DD) | हाँ | दस्तावेज़ की समाप्ति तिथि। | "2032-05-11" |
date_of_issue | string (YYYY-MM-DD) | हाँ | दस्तावेज़ की जारी होने की तिथि। | "2022-05-11" |
issuing_state | string (ISO 3166-1 alpha-3) | हाँ | जारीकर्ता देश का कोड। | "ESP" |
issuing_state_name | string | हाँ | स्थानीयकृत जारीकर्ता देश का नाम। | "Spain" |
first_name | string | हाँ | OCR द्वारा निकाले गए प्रथम नाम। | "María" |
last_name | string | हाँ | OCR द्वारा निकाला गया उपनाम। | "García López" |
full_name | string | हाँ | पूरा सामान्यीकृत नाम (विक्रेता द्वारा प्रदान किया गया)। | "María García López" |
gender | string | हाँ | M, F, या विक्रेता द्वारा दिया गया कोई अन्य मान। | "F" |
address | string | हाँ | OCR द्वारा निकाली गई पते की मूल पंक्ति। | "Calle Mayor 1, 28001 Madrid" |
formatted_address | string | हाँ | जियोकोड किया गया/प्रारूपित पता (जब पार्स हो सके)। | "Calle Mayor 1, 28001 Madrid, Spain" |
parsed_address | object | हाँ | संरचित, जियोकोड किया गया पता: street_1, street_2, city, region, country, postal_code, address_type, formatted_address, document_location ({latitude, longitude}), raw_results, is_best_match। स्रोत: kyc/utils/address.py:147-197। | { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001", "country": "ES" } |
place_of_birth | string | हाँ | OCR द्वारा निकाला गया जन्म स्थान। | "Madrid" |
marital_status | string | हाँ | जब निकाला जा सके। | null |
nationality | string (ISO 3166-1 alpha-3) | हाँ | OCR द्वारा निकाली गई राष्ट्रीयता। | "ESP" |
extra_fields | object | हाँ | दस्तावेज़ प्रकार-विशिष्ट फ़ील्ड जो मानक स्कीमा में शामिल नहीं हैं (जैसे ड्राइविंग लाइसेंस श्रेणियाँ)। | { "DL Class": "B" } |
mrz | object | हाँ | मौजूद होने पर पार्स किए गए MRZ फ़ील्ड (document_number, birth_date, expiry_date, surname, given_names, …)। | { "document_number": "AB1234567", "surname": "GARCIA", "given_names": "MARIA" } |
extra_files | array of strings (URL) | नहीं | किसी भी अतिरिक्त अपलोड की गई फ़ाइलों की प्री-साइन्ड URL। | [] |
matches | array of objects | नहीं | सत्रों के बीच दस्तावेज़ मिलान। हर आइटम: { session_id, session_number, vendor_data, verification_date, user_details: { name, document_type, document_number }, status, is_blocklisted, api_service, front_image_url }। front_image_url प्री-साइन्ड है। | [] |
verification_method | string | नहीं | यह पंक्ति किस पहचान सत्यापन विधि से बनी है: document, id_lookup या wallet। फ़ोटो खींचे गए दस्तावेज़ के लिए यह हमेशा document होता है, जिसमें अन्य विधियाँ शुरू होने से पहले बने सभी सत्र भी शामिल हैं। | "id_lookup" |
assurance | string | नहीं | verification_method से निकला आश्वासन स्तर: documentary, data_match या cryptographic। | "data_match" |
wallet_provider | string | null | हाँ | कैटलॉग वॉलेट ID, जब किसी वॉलेट ने यह पंक्ति बनाई हो (mitid, bankid_se, itsme, …)। अन्यथा null। | "mitid" |
fallback_from | object | null | हाँ | गैर-दस्तावेज़ विधि ने ID चरण क्यों समाप्त किया: { method, reason, action }। यह तब सेट होता है जब लुकअप या वॉलेट साइन-इन विफल हुआ: देश का स्विच decline होने पर अस्वीकृत पंक्ति पर (action: "decline"), और fallback_to_document होने पर उस दस्तावेज़ सत्यापन पर जिसे उपयोगकर्ता जारी रखता है (action: "fallback_to_document")। जब कोई पिछली गैर-दस्तावेज़ विफलता दर्ज नहीं होती, तो null। | { "method": "id_lookup", "reason": "no_match", "action": "decline" } |
id_lookup | object | null | हाँ | स्रोत साक्ष्य, केवल तब मौजूद जब verification_method id_lookup हो: source (ठीक वह स्रोत जिससे पूछा गया: अधिकतर देशों में सरकारी रजिस्टर, कुछ देशों में क्रेडिट ब्यूरो या आवासीय रिकॉर्ड फ़ाइल), checked_at, attempts, max_attempts, outcome (match, partial_match, no_match, provider_error, format_rejected), comparison[] ({ field, label, provided, record, result }; field इनमें से एक होता है: identification_number, full_name, date_of_birth, address, और result match, partial या no_match होता है; पिछले रिलीज़ में error वाली provider पंक्ति हो सकती है), source_errors[] (वर्तमान staging: अलग स्रोत निदान; प्रोडक्शन में रोलआउट की पुष्टि करें), registry_portrait (प्रीसाइन्ड URL, केवल उन स्रोतों के लिए जो एक लौटाते हैं) और face_match_score। | नीचे देखें |
wallet_verification | object | null | हाँ | क्रेडेंशियल साक्ष्य, केवल तब मौजूद जब verification_method wallet हो: provider, provider_name, issuing_authority, issuing_country, credential_type, level_of_assurance (low, substantial, high), verified_at, signature_valid, attributes (वॉलेट ने जो साझा किया), portrait (प्रीसाइन्ड URL, जब वॉलेट ऐसा URL साझा करता है) और face_match_score। | नीचे देखें |
document_liveness | object | null | हाँ | हर फ़्रॉड प्रकार के लिए दस्तावेज़ लाइवनेस स्कोर (portrait_replace, printed_copy, screen_replay), चाहे चेतावनी चली हो या नहीं, रिपोर्ट किए जाते हैं। हर एक में: score (0-100, जितना अधिक उतना ही संभावित रूप से वास्तविक; निचली ओर का मान, यानी वह मान जिसका निर्णय में उपयोग हुआ), front, back, decline_threshold, review_threshold, bucket (approve, review, decline, या null)। थ्रेशोल्ड और बकेट मूल्यांकन के समय सहेजे जाते हैं; जब ऐतिहासिक मूल्यांकन साक्ष्य उपलब्ध न हो तो तीनों null होते हैं, जबकि संग्रहीत स्कोर दिखते रहते हैं। जब जाँच नहीं चली तो null। देखें दस्तावेज़ लाइवनेस स्कोर। केवल V3। | { "portrait_replace": { "score": 96.46, "bucket": "approve" } } |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_id_verification" |
warnings | array | नहीं | चेतावनी ऑब्जेक्ट देखें। | [] |
region | string | हाँ | जारीकर्ता देश का क्षेत्र या राज्य, जिसकी दस्तावेज़ में पहचान की गई हो। | "CA" |
extracted_data | object | हाँ | दस्तावेज़ से निकाले गए डेटा का स्नैपशॉट, जो व्यक्ति को समीक्षा के लिए दिखाया गया था और पुष्ट मानों के साथ रखा गया है, ताकि आप उनकी तुलना कर सकें। जब व्यक्ति से समीक्षा नहीं माँगी गई थी तो null। | |
barcodes | array of objects | नहीं | दस्तावेज़ के बारकोड से पढ़ा गया डेटा, हर बारकोड के लिए एक प्रविष्टि, जिसमें type, position, data, data_raw और side होते हैं। कोई न हो तो []। | [] |
{
"status": "Approved",
"document_type": "Passport",
"document_subtype": "PASSPORT_GENERIC",
"document_number": "AB1234567",
"personal_number": "99999999R",
"portrait_image": "https://<media-host>/.../portrait.jpg?signature=...",
"front_image": "https://<media-host>/.../front.jpg?signature=...",
"front_video": null,
"back_image": "https://<media-host>/.../back.jpg?signature=...",
"back_video": null,
"full_front_image": "https://<media-host>/.../full_front.jpg?signature=...",
"full_back_image": null,
"front_image_camera_front": null,
"back_image_camera_front": null,
"front_image_camera_front_face_match_score": null,
"back_image_camera_front_face_match_score": null,
"front_image_quality_score": {
"focus_score": 91.0,
"brightness_score": 88.0,
"brightness_issue": "ok",
"is_document_fully_visible": true,
"resolution_score": 95.0,
"overall_score": 88.5
},
"back_image_quality_score": null,
"date_of_birth": "1990-05-12",
"age": 35,
"expiration_date": "2032-05-11",
"date_of_issue": "2022-05-11",
"issuing_state": "ESP",
"issuing_state_name": "Spain",
"first_name": "María",
"last_name": "García López",
"full_name": "María García López",
"gender": "F",
"address": "Calle Mayor 1, 28001 Madrid",
"formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"parsed_address": { "street_1": "Calle Mayor 1", "street_2": null, "city": "Madrid", "region": "Madrid", "postal_code": "28001", "country": "ES", "address_type": "Calle" },
"place_of_birth": "Madrid",
"marital_status": null,
"nationality": "ESP",
"extra_fields": {},
"mrz": {
"document_number": "AB1234567",
"surname": "GARCIA",
"given_names": "MARIA",
"birth_date": "900512",
"expiry_date": "320511"
},
"extra_files": [],
"matches": [],
"node_id": "first_id_verification",
"verification_method": "document",
"assurance": "documentary",
"wallet_provider": null,
"fallback_from": null,
"id_lookup": null,
"wallet_verification": null,
"document_liveness": {
"portrait_replace": {
"score": 96.46,
"front": 96.46,
"back": 98.2,
"decline_threshold": 35,
"review_threshold": 70,
"bucket": "approve"
},
"printed_copy": {
"score": 91.2,
"front": 91.2,
"back": 93.7,
"decline_threshold": 35,
"review_threshold": 77,
"bucket": "approve"
},
"screen_replay": {
"score": 99.9,
"front": 99.9,
"back": 99.5,
"decline_threshold": 30,
"review_threshold": 70,
"bucket": "approve"
}
},
"warnings": []
}
null होती हैं।
{
"status": "Approved",
"issuing_state": "ZAF",
"first_name": "Thabo",
"last_name": "Mokoena",
"full_name": "Thabo Mokoena",
"date_of_birth": "1991-06-15",
"personal_number": "9106155043088",
"node_id": "first_id_verification",
"verification_method": "id_lookup",
"assurance": "data_match",
"wallet_provider": null,
"fallback_from": null,
"id_lookup": {
"source": "Department of Home Affairs",
"checked_at": "2026-09-04T09:12:44Z",
"attempts": 1,
"max_attempts": 2,
"outcome": "match",
"comparison": [
{ "field": "identification_number", "label": "ID number", "provided": "9106155043088", "record": "9106155043088", "result": "match" },
{ "field": "full_name", "label": "Full name", "provided": "Thabo Mokoena", "record": "Thabo Mokoena", "result": "match" },
{ "field": "date_of_birth", "label": "Date of birth", "provided": "1991-06-15", "record": "1991-06-15", "result": "match" }
],
"registry_portrait": "https://<media-host>/.../registry_portrait.jpg?signature=...",
"face_match_score": 96.4
},
"wallet_verification": null,
"warnings": []
}
{
"status": "Approved",
"issuing_state": "DNK",
"first_name": "Freja",
"last_name": "Nielsen",
"full_name": "Freja Nielsen",
"date_of_birth": "1988-03-02",
"node_id": "first_id_verification",
"verification_method": "wallet",
"assurance": "cryptographic",
"wallet_provider": "mitid",
"fallback_from": null,
"id_lookup": null,
"wallet_verification": {
"provider": "mitid",
"provider_name": "MitID",
"issuing_authority": "Danish Agency for Digital Government",
"issuing_country": "DNK",
"credential_type": "person_identification",
"level_of_assurance": "substantial",
"verified_at": "2026-09-04T09:12:44Z",
"signature_valid": true,
"attributes": {
"full_name": "Freja Nielsen",
"date_of_birth": "1988-03-02",
"cpr_alias": "b0f1c2d3-e4f5-4678-9abc-def012345678"
},
"portrait": null,
"face_match_score": null
},
"warnings": []
}
NFC सत्यापन
ID दस्तावेज़ के विरुद्ध हर चिप रीड के लिए लौटाया जाता है: ICAO 9303 ePassport या eID चिप, याchip_protocol: "jpki" के माध्यम से JPKI से पढ़ा गया जापान का My Number Card। यह GET /v3/session/{sessionId}/decision/ में nfc_verifications[] के रूप में दिखता है (हर मूल KYC रिकॉर्ड के लिए एक)। स्रोत: kyc/serializers/epassport.py:121-139 (NFCV3Serializer, जो kyc/serializers/epassport.py:83-118 पर NFCV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य स्वीकार्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | स्थिति enum देखें। | "Approved" |
portrait_image | string (URL) | हाँ | चिप से निकाली गई चेहरे की छवि का प्रीसाइन्ड URL। | "https://<media-host>/.../nfc_portrait.jpg?..." |
signature_image | string (URL) | हाँ | चिप से निकाली गई हस्ताक्षर छवि का प्रीसाइन्ड URL (जब वह चिप पर संग्रहीत हो)। | null |
chip_data | object | हाँ | चिप के डेटा ग्रुप से पार्स किया गया व्यक्तिगत डेटा, समतल रूप में (kyc/utils/epassport.py:165-212): dgs (पढ़े गए डेटा ग्रुप), surname, name, country, nationality, birth_date (YYYY-MM-DD), expiry_date (YYYY-MM-DD), sex (M/F), document_type (MRZ दस्तावेज़ कोड), document_number, optional_data, MRZ चेक अंक (birth_date_hash, expiry_date_hash, document_number_hash, optional_data_hash, final_hash), mrz_string, mrz_type (TD1/TD2/TD3); साथ ही place_of_birth और address (और गैर-लैटिन नामों के लिए full_name / full_name_non_latin), जब चिप में DG11 हो। अन्यथा ये कुंजियाँ मौजूद नहीं होतीं। NFC चरण छोड़ा गया हो तो null। | { "document_number": "AB1234567", "name": "MARIA" } |
authenticity | object | हाँ | { sod_integrity, dg_integrity }; JPKI रीड के लिए null। sod_integrity जाँचता है कि Document Security Object (SOD) का हस्ताक्षर जारीकर्ता देश के मान्य CSCA तक पहुँचता है (और DSC न तो रद्द है और न ही समाप्त हुआ है)। dg_integrity जाँचता है कि हर डेटा ग्रुप का हैश SOD से मेल खाता है। दोनों true होने का अर्थ है कि चिप वास्तविक है और उसमें छेड़छाड़ नहीं हुई। | { "sod_integrity": true, "dg_integrity": true } |
certificate_summary | object | हाँ | दस्तावेज़-हस्ताक्षरकर्ता प्रमाणपत्र का सारांश (kyc/utils/epassport.py:338-348): issuer, subject, serial_number (पूर्णांक), not_valid_before, not_valid_after (YYYY-MM-DD HH:MM:SS), साथ में validation ऑब्जेक्ट { csca_verified, dsc_revoked, dsc_expired, csca_expired } (kyc/views/epassport.py:86)। | { "issuer": "Common Name: CSCA SPAIN, Country: ES", "not_valid_after": "2031-02-18 10:21:11" } |
node_id | string | null | हाँ | वर्कफ़्लो नोड का पहचानकर्ता (V3)। | "first_nfc" |
is_nfc_skipped | boolean | नहीं | true तब होता है जब यह NFC चरण पढ़ने के बजाय स्पष्ट रूप से छोड़ा गया हो; skip_reason बताता है कि क्यों। | false |
skip_reason | string | हाँ | चरण क्यों छोड़ा गया। यह केवल तब सेट होता है जब is_nfc_skipped true हो। इनमें से एक: USER_SKIPPED, DOCUMENT_WITHOUT_CHIP, CHIP_CERTIFICATE_UNAVAILABLE, DEVICE_WITHOUT_NFC, INTEGRATION_WITHOUT_NFC_ACCESS, MRZ_KEY_UNAVAILABLE, JPKI_UNAVAILABLE; देखें स्किप के कारण। निर्णय payload में सत्र-स्तर का nfc_skip_reason भी होता है, जिसकी श्रेणियाँ यही हैं और जो उन NFC चरणों को कवर करता है जो कोई रिपोर्ट बनाने से पहले ही छोड़ दिए गए थे। | null |
chip_protocol | string | नहीं | चिप कैसे पढ़ी जाती है: icao (ICAO 9303 ePassport या eID चिप) या jpki (Japan My Number Card)। jpki के लिए portrait_image, signature_image, chip_data, authenticity और certificate_summary null होते हैं। छोड़े गए चरणों पर भी सेट होता है। | "icao" |
jpki | object | हाँ | My Number Card पढ़ने से क्या सिद्ध हुआ: certificate_types, chain_valid, signature_valid, revocation_status (good, revoked या unchecked), ca_generation, certificate_expires_at, certificates[], attributes (हस्ताक्षर प्रमाणपत्र से नाम, जन्म तिथि, लिंग और पता), attributes_match_ocr और mismatched_attributes। प्रमाणपत्र, उनके सीरियल नंबर या हस्ताक्षर कभी शामिल नहीं होते। ICAO चिप के लिए, छोड़े गए चरणों के लिए, और तब null होता है जब चरण बिना कोई कार्ड पढ़े बंद हुआ हो। देखें JPKI फ़ील्ड। | null |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"status": "Approved",
"portrait_image": "https://<media-host>/.../nfc_portrait.jpg?signature=...",
"signature_image": null,
"chip_data": {
"dgs": ["DG1", "DG2", "DG11"],
"surname": "GARCIA LOPEZ",
"name": "MARIA",
"country": "ESP",
"nationality": "ESP",
"birth_date": "1990-05-12",
"expiry_date": "2032-05-11",
"sex": "F",
"document_type": "P",
"document_number": "AB1234567",
"optional_data": "",
"birth_date_hash": "4",
"expiry_date_hash": "7",
"document_number_hash": "3",
"optional_data_hash": "",
"final_hash": "8",
"mrz_string": "P<ESPGARCIA<LOPEZ<<MARIA<<<<<<<<<<<<<<<<<<<<AB1234567ESP9005124F3205117<<<<<<<<<<<<<<08",
"mrz_type": "TD3",
"place_of_birth": "MADRID",
"address": "CALLE MAYOR 1, MADRID"
},
"authenticity": { "sod_integrity": true, "dg_integrity": true },
"certificate_summary": {
"issuer": "Common Name: CSCA SPAIN, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
"subject": "Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
"serial_number": 118120836164494130086420187336801405660,
"not_valid_before": "2020-11-18 10:21:11",
"not_valid_after": "2031-02-18 10:21:11",
"validation": {
"csca_verified": true,
"dsc_revoked": false,
"dsc_expired": false,
"csca_expired": false
}
},
"node_id": "first_nfc",
"is_nfc_skipped": false,
"skip_reason": null,
"chip_protocol": "icao",
"jpki": null,
"warnings": []
}
लाइवनेस जाँच
प्रत्येक लाइवनेस सत्र के लिए लौटाया जाता है। यहGET /v3/session/{sessionId}/decision/ में liveness_checks[] के रूप में दिखता है। स्रोत: face/serializers/face.py:301-320 (LivenessV3Serializer, जो face/serializers/face.py:216-298 के LivenessV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्थिति enum। | "Approved" |
method | string (enum) | हाँ | ACTIVE_3D, FLASHING, या PASSIVE (LivenessMethodChoices, common/config/choices.py:514-517)। डेस्कटॉप सत्र की अनुमति होने पर और उपयोगकर्ता डेस्कटॉप पर होने पर पैसिव चलता है। | "PASSIVE" |
score | float (0-100) | हाँ | लाइवनेस विश्वास स्कोर, 2 दशमलव तक गोल किया गया। | 92.41 |
reference_image | string (URL) | हाँ | उपयोगकर्ता के रेफ़रेंस चेहरे के क्रॉप का प्रीसाइन्ड URL। | "https://<media-host>/.../reference.jpg?..." |
video_url | string (URL) | हाँ | लाइवनेस वीडियो का प्रीसाइन्ड URL (केवल एक्टिव मोड में)। | "https://<media-host>/.../liveness.webm?..." |
age_estimation | float | हाँ | रेफ़रेंस इमेज में सबसे बड़े चेहरे की अनुमानित आयु (वर्षों में)। | 34.2 |
matches | array of objects | नहीं | सत्रों के बीच चेहरा मिलान। हर आइटम: { session_id, session_number, similarity_percentage, vendor_data, vendor_user_id, biometric_template_id, verification_date, user_details: { full_name, document_type, document_number }, match_image_url, status, is_blocklisted, is_allowlisted, api_service, source }। source session, imported, list_entry, या retained_template होता है। रखे गए टेम्पलेट के मिलान में vendor_user_id, vendor_data और biometric_template_id होते हैं; उसके सत्र, इमेज, पहचान विवरण, स्थिति और API सेवा के फ़ील्ड null होते हैं। | [] |
face_quality | float (0-100) | हाँ | पैसिव लाइवनेस के चेहरे की गुणवत्ता का स्कोर (प्रतिशत में सामान्यीकृत)। | 87.50 |
face_luminance | float (0-100) | हाँ | पैसिव लाइवनेस के चेहरे की चमक का स्कोर (0-255 से प्रतिशत में सामान्यीकृत)। | 54.12 |
node_id | string | null | हाँ | वर्कफ़्लो नोड का पहचानकर्ता (V3)। | "first_liveness" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"status": "Approved",
"method": "PASSIVE",
"score": 92.41,
"reference_image": "https://<media-host>/.../reference.jpg?signature=...",
"video_url": null,
"age_estimation": 34.2,
"matches": [],
"face_quality": 87.50,
"face_luminance": 54.12,
"node_id": "first_liveness",
"warnings": []
}
चेहरा मिलान
हर चेहरा-मिलान तुलना के लिए लौटाई जाती है (आमतौर पर उपयोगकर्ता का लाइवनेस चेहरा दस्तावेज़ के पोर्ट्रेट से मिलाया जाता है)। यहGET /v3/session/{sessionId}/decision/ में face_matches[] के रूप में दिखता है। स्रोत: face/serializers/face.py:367-389 (FaceMatchV3Serializer, जो face/serializers/face.py:323-364 के FaceMatchV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्थिति enum। | "Approved" |
score | float (0-100) | हाँ | समानता, 2 दशमलव तक गोल किया गया। जब प्रदाता केवल unmatched_faces[].Confidence लौटाता है, तो इसे 100 - confidence में बदला जाता है। | 97.83 |
source_image_session_id | string (UUID) | हाँ | वह सत्र जिसकी संग्रहीत पोर्ट्रेट से स्रोत (रेफ़रेंस) इमेज प्राप्त हुई। यह पोर्ट्रेट-आधारित फ़्लो में सेट होता है (बायोमेट्रिक प्रमाणीकरण, या सत्र बनाते समय दिया गया पोर्ट्रेट)। जब रेफ़रेंस उसी सत्र का दस्तावेज़ पोर्ट्रेट हो, तो null होता है। | null |
source_image | string (URL) | हाँ | स्रोत (रेफ़रेंस) इमेज का प्रीसाइन्ड URL, जो आमतौर पर दस्तावेज़ पोर्ट्रेट होती है, या बायोमेट्रिक प्रमाणीकरण फ़्लो में संग्रहीत पोर्ट्रेट। | "https://<media-host>/.../source.jpg?..." |
target_image | string (URL) | हाँ | लाइवनेस के दौरान ली गई टारगेट (लाइव चेहरा) इमेज का प्रीसाइन्ड URL। | "https://<media-host>/.../target.jpg?..." |
node_id | string | null | हाँ | वर्कफ़्लो नोड का पहचानकर्ता (V3)। | "first_face_match" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
face_coverage | object | हाँ | कैप्चर की गई इमेज में eyes, mouth और face ढके हैं या नहीं। हर क्षेत्र में covered, calibrated और visibility_score होते हैं; calibrated: false का मतलब छाया का प्रमाण है, जिस पर कोई चेतावनी लागू नहीं होती। यह केवल GET /v3/session/{sessionId}/decision/ से लौटाया जाता है, वेबहुक payload में कभी नहीं। | { "eyes": { "covered": false, "calibrated": true, "visibility_score": 0.98 } } |
{
"status": "Approved",
"score": 97.83,
"source_image_session_id": null,
"source_image": "https://<media-host>/.../source.jpg?signature=...",
"target_image": "https://<media-host>/.../target.jpg?signature=...",
"node_id": "first_face_match",
"warnings": []
}
चेहरा खोज
स्टैंडअलोन चेहरा खोज API (POST /v3/face-search/) यह डेटा लौटाता है। Face Search /v3/session/{sessionId}/decision/ में कभी भी बहुवचन array के रूप में नहीं आता। जब save_api_request=true के साथ सहेजा जाता है, तब सत्र वहाँ features[] में FACE_SEARCH entry के रूप में और एक liveness_checks[] आइटम के रूप में दिखता है, जिसमें सहेजे गए matches होते हैं। स्रोत: apis/serializers/face_search.py:8-79 (FaceSearchResponseSerializer, जो FaceSearchDetailsSerializer को wrap करता है); match dicts face/utils/utils.py:869-884 में बनते हैं।
शीर्ष-स्तर का रिस्पॉन्स:
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
request_id | string (UUID) | नहीं | save_api_request=true होने पर सहेजा गया सत्र ID (इसे GET /v3/session/{sessionId}/decision/ के साथ उपयोग किया जा सकता है); अन्यथा एक अस्थायी सहसंबंध UUID। | "4a1c2c4e-8b1b-4d6a-91b5-ee9a1f3a2c7f" |
face_search | object | नहीं | खोज का विवरण वाला payload, नीचे दिए गए फ़ील्ड देखें। | — |
vendor_data | string | हाँ | अनुरोध से दोहराया गया vendor_data। | null |
metadata | object | हाँ | अनुरोध से दोहराया गया metadata। | null |
created_at | string (ISO 8601) | नहीं | सर्वर-साइड अनुरोध समय-चिह्न। | "2026-06-12T01:04:42.763237+00:00" |
face_search object:
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | Declined केवल तब होता है जब FACE_IN_BLOCKLIST या POSSIBLE_FACE_IN_BLOCKLIST चेतावनी सक्रिय होती है; अन्यथा Approved होता है। केवल डुप्लिकेट मिलान से कभी अस्वीकृति नहीं होती (apis/views/face_search.py:242-248)। | "Approved" |
total_matches | integer | नहीं | matches[] में लौटाए गए मिलानों की संख्या (0–5)। | 1 |
matches | face-search match objects का array | नहीं | समानता की न्यूनतम सीमा से ऊपर के अधिकतम 5 मिलान, समानता के अवरोही क्रम में सॉर्ट किए गए (ब्लॉकलिस्ट वाली entries search_type=blocklisted_or_approved के साथ सबसे पहले)। | […] |
user_image | object | नहीं | जमा की गई इमेज का detection परिणाम: { entities: [{ bbox, confidence }], best_angle }, जिसमें हर पहचाने गए चेहरे के लिए एक entity होती है। | { "entities": [{ "bbox": [40, 40, 120, 120], "confidence": 0.73 }], "best_angle": 0 } |
warnings | objects का array | नहीं | इस स्टैंडअलोन API के लिए घटा हुआ चेतावनी ढाँचा, जिसमें node_id नहीं है। serializer contract में { risk, additional_data, log_type, short_description, long_description } घोषित है (apis/serializers/face_search.py:49-54); runtime payload में feature भी होता है, जिसका मान हमेशा "LIVENESS" होता है (apis/views/face_search.py:332-341)। | [] |
चेहरा खोज मिलान ऑब्जेक्ट
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
session_id | string (UUID) | हाँ | मिलान किया गया मिलान किए गए सत्यापन सत्र। जब source imported, list_entry या retained_template हो, तब null होता है। | "a3f2a6f1-…" |
session_number | integer | हाँ | मिलान किए गए सत्र की Console-अनुकूल संख्या; गैर-सत्र मिलानों के लिए null। | 1024 |
similarity_percentage | float (0-100) | नहीं | जमा किए गए चेहरे और मिलान किए गए चेहरे के बीच समानता। | 96.42 |
source | string (enum) | नहीं | मिलान किया गया चेहरा कहाँ से दर्ज हुआ था: session (verification सत्र या सहेजी गई स्टैंडअलोन कॉल), imported (सीधे उपयोगकर्ता प्रोफ़ाइल में चेहरा अपलोड), list_entry (किसी सूची से जुड़ा चेहरा), retained_template (स्रोत सत्र हटाए जाने के बाद रखा गया, बिना इमेज वाला बायोमेट्रिक टेम्पलेट)। | "session" |
vendor_data | string | हाँ | मिलान किए गए सत्र का vendor_data, या imported और retained_template मिलानों के लिए जुड़े उपयोगकर्ता का। | "user-12345" |
vendor_user_id | string (UUID) | हाँ | जुड़ा हुआ उपयोगकर्ता। list_entry मिलानों और ऐसे सत्रों के लिए null होता है जिनका कोई User नहीं है। | "2f7c1a9e-…" |
biometric_template_id | string (UUID) | हाँ | मिलान किया गया रखा हुआ टेम्पलेट। यह केवल retained_template मिलानों के लिए सेट होता है; इसे GET/DELETE /v3/biometric-templates/{id}/ के साथ उपयोग करें। | null |
verification_date | string (ISO 8601) | हाँ | मिलान किया गया चेहरा कब कैप्चर हुआ था, या retained_template कब रखा गया था; list_entry मिलानों के लिए null। | "2024-11-04T09:14:02Z" |
user_details | object | हाँ | मिलान किए गए सत्र के दस्तावेज़ सत्यापन से { full_name, document_type, document_number }; imported मिलानों के लिए केवल full_name सेट होता है; कोई पहचान डेटा न होने पर null, और retained_template मिलानों के लिए हमेशा null। | { "full_name": "María García López", "document_type": "Passport", "document_number": "AB1234567" } |
match_image_url | string (URL) | हाँ | मिलान किए गए उपयोगकर्ता का संदर्भ चेहरा: save_api_request=true होने पर presigned URL, अन्यथा raw storage path। retained_template मिलानों के लिए हमेशा null, क्योंकि उनमें कोई इमेज नहीं होती। | "https://<media-host>/.../matched.jpg?..." |
status | string | हाँ | मिलान किए गए सत्र की verification स्थिति (देखें स्टेटस एनम); गैर-सत्र मिलानों के लिए null। | "Approved" |
is_blocklisted | boolean | नहीं | क्या मिलान किया गया चेहरा आपकी face blocklist में है। retained_template मिलानों के लिए हमेशा false; ब्लॉकलिस्ट वाला चेहरा अलग से list_entry मिलान के रूप में बताया जाता है। | false |
is_allowlisted | boolean | नहीं | क्या मिलान किया गया चेहरा आपकी किसी allowlist में है। | false |
api_service | string (enum) | हाँ | मिलान किए गए सत्र का स्टैंडअलोन API प्रकार (बड़े अक्षरों में, जैसे PASSIVE_LIVENESS, FACE_MATCH); workflow सत्रों और गैर-सत्र मिलानों के लिए null। | null |
{
"request_id": "4a1c2c4e-8b1b-4d6a-91b5-ee9a1f3a2c7f",
"face_search": {
"status": "Approved",
"total_matches": 1,
"matches": [
{
"session_id": "a3f2a6f1-1c1c-4eec-8b69-1c1c2f3a2c7f",
"session_number": 1024,
"similarity_percentage": 96.42,
"source": "session",
"vendor_data": "user-12345",
"verification_date": "2024-11-04T09:14:02Z",
"user_details": {
"full_name": "María García López",
"document_type": "Passport",
"document_number": "AB1234567"
},
"match_image_url": "https://<media-host>/.../matched.jpg?signature=...",
"status": "Approved",
"is_blocklisted": false,
"is_allowlisted": false,
"api_service": null
}
],
"user_image": {
"entities": [
{
"bbox": [40, 40, 120, 120],
"confidence": 0.732973
}
],
"best_angle": 0
},
"warnings": []
},
"vendor_data": null,
"metadata": null,
"created_at": "2026-06-12T01:04:42.763237+00:00"
}
AML स्क्रीनिंग
इसे स्क्रीन की गई प्रत्येक इकाई के लिए लौटाया जाता है। KYC और KYB, दोनों सत्रों के लिए यहGET /v3/session/{sessionId}/decision/ में aml_screenings[] के रूप में दिखता है। स्रोत: aml/serializers/aml.py:63-85 (AMLV3Serializer, जो aml/serializers/aml.py:28-60 के AMLV2Serializer का विस्तार करता है)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्टेटस एनम। | "Approved" |
total_hits | integer | नहीं | स्क्रीनिंग हिट्स की संख्या (हमेशा मौजूद रहती है, डिफ़ॉल्ट 0)। | 2 |
entity_type | string (enum) | हाँ | person या company (EntityTypeChoices, common/config/choices.py:675-677)। | "person" |
hits | objects का array | नहीं | हर हिट के लिए एक entry। मुख्य फ़ील्ड: id, caption, match (bool), target (bool | null: क्या इकाई सूची में प्रत्यक्ष लक्ष्य है), match_score (float 0-100; मिलान स्कोर, पहचान का विश्वास), risk_score (float 0-100, इकाई जोखिम स्कोर), score (deprecated 0-1 float), datasets[] (जैसे PEP, PEP Level 1-4, Sanctions, Adverse Media, Warnings and Regulatory Enforcement, Fitness and Probity), properties (नाम, उपनाम, जन्म तिथियाँ, …), features, url, first_seen, last_seen, rca_name, risk_view, score_breakdown, pep_matches, sanction_matches, warning_matches, adverse_media_matches, adverse_media_details, linked_entities, additional_information, और review_status (Unreviewed, Confirmed Match, False Positive, Inconclusive), जिसे update-AML-hit-status endpoint से संपादित किया जा सकता है (AMLHitStatusChoices)। | […] |
score | float (0-100) | हाँ | समग्र स्क्रीनिंग स्कोर: False Positive के रूप में चिह्नित न किए गए हिट्स में सबसे ऊँचा risk_score (aml/services/aml.py:832-842)। जब हर हिट फ़ॉल्स पॉज़िटिव हो, तो 0। गणना होने तक null। | 42.7 |
screened_data | object | हाँ | स्क्रीनिंग को भेजे गए डेटा का स्नैपशॉट: full_name, nationality, date_of_birth, document_number। | { "full_name": "María García López", "date_of_birth": "1990-05-12" } |
is_ongoing_monitoring_enabled | boolean | नहीं | क्या इकाई सतत निगरानी के तहत पुनः स्क्रीनिंग के लिए सब्सक्राइब की गई है। | false |
next_ongoing_monitoring_bill_date | string (YYYY-MM-DD) | हाँ | सतत निगरानी सक्षम होने पर last_aml_bill_date + 365 days के रूप में गणना की जाती है। यह बिलिंग तिथि है, स्क्रीनिंग तिथि नहीं। | null |
last_ongoing_screening_at | string (ISO 8601) | हाँ | जब सतत निगरानी ने इस रिकॉर्ड की पुनः स्क्रीनिंग अंतिम बार पूरी की, चाहे परिणाम बदला हो या नहीं। कभी पुनः स्क्रीन न होने पर null; इसे कभी पीछे जाकर नहीं भरा जाता। | "2026-09-12T04:03:11Z" |
last_ongoing_screening_datasets_updated_at | string (ISO 8601) | हाँ | उस स्क्रीनिंग के लिए प्रदाता द्वारा रिपोर्ट की गई सबसे हाल की AML डेटासेट अपडेट। कोई डेटासेट तिथि रिपोर्ट न होने पर null; इसका कभी अनुमान नहीं लगाया जाता। | null |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_aml" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"status": "In Review",
"total_hits": 1,
"entity_type": "person",
"hits": [
{
"id": "Q7XW3-aml-hit-1",
"caption": "Maria Garcia Lopez",
"match": true,
"target": true,
"match_score": 86.4,
"risk_score": 42.7,
"datasets": ["PEP Level 2"],
"properties": {
"name": ["María García López", "M. García"],
"alias": ["Maria Garcia"],
"birthDate": ["1990-05-12"]
},
"url": "https://example.org/registry/entities/Q7XW3",
"first_seen": "2023-11-02T00:00:00Z",
"last_seen": "2026-05-01T00:00:00Z",
"review_status": "Unreviewed"
}
],
"score": 42.7,
"screened_data": {
"full_name": "María García López",
"date_of_birth": "1990-05-12",
"nationality": "ES",
"document_number": "AB1234567"
},
"is_ongoing_monitoring_enabled": false,
"next_ongoing_monitoring_bill_date": null,
"last_ongoing_screening_at": null,
"last_ongoing_screening_datasets_updated_at": null,
"node_id": "first_aml",
"warnings": []
}
IP विश्लेषण
प्रत्येक कैप्चर किए गए नेटवर्क स्थान के लिए लौटाया जाता है। KYC और KYB, दोनों सत्रों के लिएGET /v3/session/{sessionId}/decision/ में ip_analyses[] के रूप में दिखता है। स्रोत: kyc/serializers/location.py:196-243 (IPAnalysisSerializerV3)।
| फ़ील्ड | प्रकार | शून्य-योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्टेटस एनम। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_ip_analysis" |
device_brand | string | हाँ | यूज़र एजेंट से निकला डिवाइस ब्रांड। | "Apple" |
device_model | string | हाँ | डिवाइस मॉडल। | "iPhone" |
browser_family | string | हाँ | ब्राउज़र परिवार। | "Mobile Safari" |
os_family | string | हाँ | OS परिवार। | "iOS" |
platform | string | हाँ | उच्च-स्तरीय प्लेटफ़ॉर्म (mobile, desktop, tablet)। | "mobile" |
device_fingerprint | string | हाँ | स्थिर प्रति-डिवाइस फ़िंगरप्रिंट हैश। | "f2a3…" |
ip_country | string | हाँ | IP से निकाला गया देश का नाम। | "Spain" |
ip_country_code | string (ISO 3166-1 alpha-2) | हाँ | IP से निकाला गया देश कोड। | "ES" |
ip_state | string | हाँ | IP से निकाला गया क्षेत्र / राज्य। | "Comunidad de Madrid" |
ip_city | string | हाँ | IP से निकाला गया शहर। | "Madrid" |
latitude | float | हाँ | IP से प्राप्त अक्षांश। | 40.4168 |
longitude | float | हाँ | IP से प्राप्त देशांतर। | -3.7038 |
ip_address | string | हाँ | कैप्चर किया गया IP पता। | "203.0.113.42" |
isp | string | हाँ | ISP का नाम। | "Telefonica de Espana" |
organization | string | हाँ | संगठन का नाम (अक्सर ISP के समान)। | "Telefonica de Espana" |
is_vpn_or_tor | boolean | हाँ | true जब IP किसी VPN, प्रॉक्सी या Tor एग्ज़िट नोड का हो। | false |
is_data_center | boolean | हाँ | true जब IP किसी ज्ञात होस्टिंग / डेटा-सेंटर ASN का हो। | false |
time_zone | string | हाँ | IANA टाइम-ज़ोन नाम। | "Europe/Madrid" |
time_zone_offset | string | हाँ | UTC ऑफ़सेट। | "+02:00" |
ip | object | नहीं | { location, distance_from_id_document, distance_from_poa_document }। location = { latitude, longitude }। दूरी किलोमीटर में; जब कोई एक पक्ष न हो, तो null। | { "location": { "latitude": 40.4168, "longitude": -3.7038 }, "distance_from_id_document": 3.4, "distance_from_poa_document": 1.1 } |
id_document | object | नहीं | { location, distance_from_ip, distance_from_poa_document }। पहचान दस्तावेज़ का स्थान issuing_state और पार्स किए गए पते से निकाला गया। | { "location": { "latitude": 40.4165, "longitude": -3.7026 }, "distance_from_ip": 3.4, "distance_from_poa_document": 4.0 } |
poa_document | object | नहीं | { location, distance_from_ip, distance_from_id_document }। पते के प्रमाण (POA) दस्तावेज़ का पता, भू-कोडित। | { "location": { "latitude": 40.4170, "longitude": -3.7040 }, "distance_from_ip": 1.1, "distance_from_id_document": 4.0 } |
matches | array of objects | नहीं | क्रॉस-सत्र IP/डिवाइस मिलान। प्रत्येक आइटम: { session_id, session_number, vendor_data, verification_date, match_type, match_source, matched_value, status, is_blocklisted, api_service, source, device_info, location_info, confidence, match_mode }। match_type ip_address या device_fingerprint है; match_source ip_address, persistent_id, legacy_fp, या recovered_high है (पुनर्प्राप्त मिलानों में recovery_similarity, tls_ja4_corroborated, recovery_gate_reason भी होते हैं)। 5 IP + 5 डिवाइस मिलान तक सीमित। | [] |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
browser_version, os_version | string | हाँ | यूज़र एजेंट से ब्राउज़र और OS के संस्करण। | "17.4" |
user_agent, accept_language | string | हाँ | ब्राउज़र द्वारा भेजी गई यूज़र एजेंट स्ट्रिंग और Accept-Language हेडर। | "en-US,en;q=0.9" |
session_identifier, session_age_ms | string, integer | हाँ | वह ब्राउज़िंग सत्र जिसमें चरण चला, और उसकी आयु मिलीसेकंड में। | 48210 |
coords_accuracy | float | हाँ | डिवाइस द्वारा रिपोर्ट किए गए निर्देशांकों की सटीकता त्रिज्या, मीटर में। | 35.0 |
raw_device_data | object | हाँ | चरण के लिए एकत्र किए गए कच्चे डिवाइस सिग्नल। | {} |
{
"status": "Approved",
"node_id": "first_ip_analysis",
"device_brand": "Apple",
"device_model": "iPhone",
"browser_family": "Mobile Safari",
"os_family": "iOS",
"platform": "mobile",
"device_fingerprint": "f2a3c1de8b994a3f9e4cdf3a02b1a7c9",
"ip_country": "Spain",
"ip_country_code": "ES",
"ip_state": "Comunidad de Madrid",
"ip_city": "Madrid",
"latitude": 40.4168,
"longitude": -3.7038,
"ip_address": "203.0.113.42",
"isp": "Telefonica de Espana",
"organization": "Telefonica de Espana",
"is_vpn_or_tor": false,
"is_data_center": false,
"time_zone": "Europe/Madrid",
"time_zone_offset": "+02:00",
"ip": {
"location": { "latitude": 40.4168, "longitude": -3.7038 },
"distance_from_id_document": 3.4,
"distance_from_poa_document": 1.1
},
"id_document": {
"location": { "latitude": 40.4165, "longitude": -3.7026 },
"distance_from_ip": 3.4,
"distance_from_poa_document": 4.0
},
"poa_document": {
"location": { "latitude": 40.4170, "longitude": -3.7040 },
"distance_from_ip": 1.1,
"distance_from_id_document": 4.0
},
"matches": [],
"warnings": []
}
स्थान सत्यापन
प्रत्येक स्थान सत्यापन चरण के लिए लौटाया जाता है।GET /v3/session/{sessionId}/decision/ में geolocation_checks[] के रूप में दिखता है: प्रत्येक चरण का एक आइटम, यानी उसका स्वीकृत प्रयास। geolocation_attempts[] हर चरण के हर प्रयास को सबसे पुराने से पहले सूचीबद्ध करता है। ऐसे वर्कफ़्लो के लिए, जिसमें यह चरण नहीं है, दोनों null होते हैं। स्रोत: GeolocationDecisionSerializer।
| फ़ील्ड | प्रकार | शून्य-योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
node_id | string | हाँ | वह वर्कफ़्लो नोड जिसने परिणाम दिया। | "geolocation_1" |
status | string | नहीं | Status enum देखें। | "Declined" |
outcome | string | हाँ | प्रयास में क्या हुआ: verified, low_accuracy, accuracy_undetermined, stale, approximate, denied, restricted, unavailable, timeout, mock_detected, outside_geofence, in_blocked_area, anonymizer_detected, skipped, replay_rejected या unsupported_client। | "outside_geofence" |
permission | string | हाँ | सिस्टम ने क्या अनुमति दी: granted_precise, granted_approximate, denied, restricted, unavailable, timeout, dismissed या not_requested। | "granted_precise" |
latitude, longitude | float | हाँ | WGS84 स्थान। स्थान न होने पर null। | 48.8566 |
accuracy_m | float | हाँ | मीटर में अनिश्चितता की त्रिज्या। | 35.0 |
accuracy_confidence | string | हाँ | p95, p68 या unspecified। | "p95" |
measured_at, age_seconds | datetime, integer | हाँ | डिवाइस ने स्थान कब लिया, और Didit को उसके प्राप्त होने तक कितने सेकंड लगे। | 2 |
source, platform, sdk_version | string | हाँ | स्थान कहाँ से आया, उसे तैयार करने वाला क्लाइंट और उसका SDK संस्करण। | "browser" |
is_mock, produced_by_accessory | boolean | हाँ | प्लेटफ़ॉर्म द्वारा रिपोर्ट किए गए स्पूफिंग साक्ष्य। null का अर्थ है कि प्लेटफ़ॉर्म इसे रिपोर्ट नहीं करता। | null |
integrity | string | नहीं | attested, not_attested, failed, unsupported (web) या not_determined। | "unsupported" |
country_code, region_code, city | string | हाँ | वह स्थान जिस पर स्थान-निर्धारण का परिणाम आता है। | "FR" |
geofence, inside_geofence, geofence_basis, inside_areas, blocked_areas | object, boolean, string, arrays | हाँ | देश और क्षेत्र का परिणाम। | { "enabled": true, "result": "outside" } |
position_source, anonymizers | string, object | हाँ | वह स्रोत जहाँ से इस चरण के लिए स्थान लिया जाता है, और VPN, proxy, Tor, स्पूफिंग तथा एमुलेटर के संकेत। | "device_and_ip" |
ip_distance_km, ip_distance_uncertainty_km, ip_consistent, document_distance_km, travel_excused, consecutive_mismatches | number, boolean, integer | हाँ | IP स्थान और रिकॉर्ड में दर्ज पते के साथ तुलना। | 12.4 |
attempts | integer | नहीं | चरण के भीतर इस प्रयास का क्रम संख्या। | 3 |
consent | object | हाँ | उस सूचना का accepted_at, version और locale, जिसे व्यक्ति ने स्वीकार किया। | |
warnings | array of चेतावनी ऑब्जेक्ट | नहीं | चरण की LOCATION_* चेतावनियाँ। ये geolocation_attempts[] में मौजूद नहीं होतीं, जिसमें received_at और created_at जुड़े होते हैं। | [] |
पते का प्रमाण
हर प्रस्तुत पते के दस्तावेज़ के लिए लौटाया जाता है। यहGET /v3/session/{sessionId}/decision/ में poa_verifications[] के रूप में दिखता है। स्रोत: poa/serializers/poa.py:212-227 (POAV3Serializer, जो poa/serializers/poa.py:173-209 पर POAV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य मान | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | Status enum देखें। | "Approved" |
issuing_state | string (ISO 3166-1 alpha-3) | हाँ | जारीकर्ता देश का कोड। | "ESP" |
document_type | string | नहीं | PoaDocumentTypeChoices (common/config/choices.py:868-873) से उच्च-स्तरीय प्रकार: UTILITY_BILL, BANK_STATEMENT, GOVERNMENT_ISSUED_DOCUMENT, OTHER_POA_DOCUMENT। फ़ॉलबैक के रूप में UNKNOWN होता है, कभी null नहीं। | "UTILITY_BILL" |
document_subtype | string | नहीं | PoaDocumentSubtypeChoices से उप-प्रकार कोड (जैसे ELECTRICITY_BILL, WATER_BILL, ACCOUNT_STATEMENT)। फ़ॉलबैक के रूप में UNKNOWN होता है, कभी null नहीं। | "ELECTRICITY_BILL" |
issuer | string | हाँ | जारी करने वाली संस्था का नाम। | "Iberdrola" |
issue_date | string (YYYY-MM-DD) | हाँ | दस्तावेज़ की जारी होने की तिथि। | "2026-04-15" |
expiration_date | string (YYYY-MM-DD) | हाँ | दस्तावेज़ पर छपी समाप्ति तिथि, जब वह मौजूद हो। | null |
poa_address | string | हाँ | OCR द्वारा निकाला गया कच्चा पता। | "Calle Mayor 1, 28001 Madrid" |
poa_formatted_address | string | हाँ | जियोकोड किया गया और फ़ॉर्मैट किया गया पता। | "Calle Mayor 1, 28001 Madrid, Spain" |
poa_parsed_address | object | हाँ | संरचित पता (street_1, street_2, city, region, postal_code, country (alpha-2), address_type, document_location, …)। | { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001" } |
document_file | string (URL) | हाँ | अपलोड किए गए दस्तावेज़ का प्री-साइन्ड URL। | "https://<media-host>/.../poa.pdf?..." |
document_language | string | हाँ | दस्तावेज़ की पहचानी गई भाषा (ISO 639-1)। | "es" |
document_metadata | object | हाँ | फ़िल्टर किया गया मेटाडेटा: file_size, content_type, creation_date, modified_date, creator, producer, software, encryption, is_signed, is_tampered, signature_info, exif_original_date, exif_digitized_date, processed_by_known_editor, has_different_creation_mod_date, overlay_manipulation। | { "file_size": 184221, "content_type": "application/pdf", "is_tampered": false } |
extra_fields | object | नहीं | बैंक-खाता फ़ील्ड (bank_account_number, bank_iban, bank_sort_code, bank_routing_number, bank_swift_bic, bank_branch_name, bank_branch_address), document_phone_number, additional_names, और रिकॉर्ड पर सहेजी गई कोई भी कस्टम कुंजी। | { "bank_iban": null, "additional_names": [] } |
name_on_document | string | हाँ | POA पर जैसा दिखता है वैसा नाम। | "María García López" |
expected_details_address | string | हाँ | वह पता जो ग्राहक ने साइनअप के दौरान शब्दशः टाइप किया। | "Calle Mayor 1, Madrid" |
expected_details_formatted_address | string | हाँ | जियोकोड किया गया अपेक्षित पता। | "Calle Mayor 1, 28001 Madrid, Spain" |
expected_details_parsed_address | object | हाँ | संरचित अपेक्षित पता। | { "city": "Madrid", "postal_code": "28001" } |
name_match_score_expected_details | float (0-100) | हाँ | name_on_document और सत्र बनाते समय दिए गए नाम के बीच फ़ज़ी मिलान। | 94.0 |
name_match_score_id_verification | float (0-100) | हाँ | name_on_document और सत्यापित ID के full_name के बीच फ़ज़ी मिलान। | 100.0 |
extra_files | array of strings (URL) | नहीं | अतिरिक्त अपलोड की गई फ़ाइलों के प्रीसाइन किए गए URL। | [] |
detected_codes | array of objects | नहीं | दस्तावेज़ के हर प्रोसेस किए गए पेज पर मिले QR कोड और बारकोड: type, page_number (1 से शुरू), position (पॉलीगन), x/y/width/height (बाउंडिंग बॉक्स), page_width/page_height, raw_payload (base64), parsed_payload (डिकोड किया गया मान, null जब कोई कोड मिला हो पर डिकोड न हो सका हो)। जब डिटेक्शन कुछ न पाए, तो खाली array। | [{ "type": "QR_CODE", "page_number": 1, "parsed_payload": "https://issuer.example/inv/9981" }] |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_poa" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"status": "Approved",
"issuing_state": "ESP",
"document_type": "UTILITY_BILL",
"document_subtype": "ELECTRICITY_BILL",
"issuer": "Iberdrola",
"issue_date": "2026-04-15",
"expiration_date": null,
"poa_address": "Calle Mayor 1, 28001 Madrid",
"poa_formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"poa_parsed_address": { "street_1": "Calle Mayor 1", "city": "Madrid", "postal_code": "28001", "country": "ES" },
"document_file": "https://<media-host>/.../poa.pdf?signature=...",
"document_language": "es",
"document_metadata": {
"file_size": 184221,
"content_type": "application/pdf",
"creation_date": "2026-04-15T08:11:32Z",
"modified_date": "2026-04-15T08:11:32Z",
"creator": "Iberdrola Billing",
"producer": "Adobe PDF Library 15.0",
"software": null,
"encryption": null,
"is_signed": true,
"is_tampered": false,
"signature_info": { "signer_name": "Iberdrola Clientes", "date": "2026-04-15T08:11:32Z" },
"exif_original_date": null,
"exif_digitized_date": null,
"processed_by_known_editor": false,
"has_different_creation_mod_date": false,
"overlay_manipulation": null
},
"extra_fields": {
"bank_account_number": null,
"bank_iban": null,
"bank_sort_code": null,
"bank_routing_number": null,
"bank_swift_bic": null,
"bank_branch_name": null,
"bank_branch_address": null,
"document_phone_number": null,
"additional_names": []
},
"name_on_document": "María García López",
"expected_details_address": "Calle Mayor 1, Madrid",
"expected_details_formatted_address": "Calle Mayor 1, 28001 Madrid, Spain",
"expected_details_parsed_address": { "city": "Madrid", "postal_code": "28001", "country": "ES" },
"name_match_score_expected_details": 94.0,
"name_match_score_id_verification": 100.0,
"extra_files": [],
"detected_codes": [
{
"type": "QR_CODE",
"page_number": 1,
"position": [[820, 1120], [1002, 1120], [1002, 1302], [820, 1302]],
"x": 820,
"y": 1120,
"width": 182,
"height": 182,
"page_width": 1190,
"page_height": 1684,
"raw_payload": "aHR0cHM6Ly9pYmVyZHJvbGEuZXMvZmFjdHVyYS85OTgx",
"parsed_payload": "https://iberdrola.es/factura/9981"
},
{
"type": "CODE_128",
"page_number": 1,
"position": [[112, 1480], [560, 1480], [560, 1540], [112, 1540]],
"x": 112,
"y": 1480,
"width": 448,
"height": 60,
"page_width": 1190,
"page_height": 1684,
"raw_payload": "MDA5OTgxMDAwNDI=",
"parsed_payload": "0099810042"
}
],
"node_id": "first_poa",
"warnings": []
}
फ़ोन सत्यापन
हर फ़ोन-सत्यापन प्रयास के लिए लौटाया जाता है। यह KYC और KYB दोनों सत्रों के लिएGET /v3/session/{sessionId}/decision/ में phone_verifications[] के रूप में दिखता है। स्रोत: phone/serializers/phone.py:251-266 (PhoneV3Serializer, जो phone/serializers/phone.py:103-248 पर PhoneV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | नल योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें Status enum। | "Approved" |
phone_number_prefix | string | नहीं | E.164 देश उपसर्ग (+ सहित)। | "+34" |
phone_number | string | नहीं | बिना उपसर्ग का सब्सक्राइबर नंबर। | "612345678" |
full_number | string | नहीं | पूरा E.164 नंबर (phone_number_prefix + phone_number)। | "+34612345678" |
country_code | string (ISO 3166-1 alpha-2) | हाँ | नंबर का देश। | "ES" |
country_name | string | हाँ | स्थानीयकृत देश का नाम। | "Spain" |
carrier | object | नहीं | { name, type }, जहाँ type एक LineTypeChoices मान है (common/config/choices.py:648-667): mobile, fixed_line, voip, isp, vpn, toll_free, premium_rate, satellite, pager, payphone, voice_mail, unknown, और अन्य लाइन प्रकार। | { "name": "Movistar", "type": "mobile" } |
is_disposable | boolean | नहीं | true, जब कैरियर नंबर को अस्थायी/डिस्पोज़ेबल चिह्नित करे। | false |
is_virtual | boolean | नहीं | true, जब carrier.type इनमें से कोई हो: voip, isp, vpn। | false |
verification_method | string | नहीं | OTP भेजने का चैनल (whatsapp, sms, …)। यह आखिरी भेजने के प्रयास के actual_channel से पढ़ा जाता है (न मिलने पर अनुरोधित channel, फिर sms पर फ़ॉलबैक करता है)। | "whatsapp" |
verification_attempts | integer | नहीं | OTP भेजने के कुल प्रयास (पहला भेजना और दोबारा भेजना)। | 1 |
verified_at | string (ISO 8601) | हाँ | वह समय-चिह्न जब OTP सफलतापूर्वक दर्ज किया गया। | "2026-05-17T10:14:02Z" |
lifecycle | array of objects | नहीं | कालक्रम के अनुसार घटनाएँ: भेजने के प्रयास, डिलीवरी कॉलबैक, कोड जाँच, और अंतिम स्थिति घटना। हर घटना { type, timestamp, details, fee } है। घटना के प्रकार PhoneEventChoices से आते हैं। | […] |
matches | array of objects | नहीं | सत्रों के बीच फ़ोन नंबर मिलान। हर आइटम: { session_id, session_number, vendor_data, verification_date, phone_number, status, is_blocklisted, api_service, source }। source session या list_entry होता है। | [] |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_phone" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
phone_intelligence | object | हाँ | फ़ोन इंटेलिजेंस संकेत। केवल तब मौजूद, जब इस नंबर के लिए इंटेलिजेंस ऐड-ऑन चला हो। | |
phone_social | object | हाँ | नंबर का सोशल फ़ुटप्रिंट। केवल तब मौजूद, जब सोशल फ़ुटप्रिंट ऐड-ऑन चला हो। |
{
"status": "Approved",
"phone_number_prefix": "+34",
"phone_number": "612345678",
"full_number": "+34612345678",
"country_code": "ES",
"country_name": "Spain",
"carrier": { "name": "Movistar", "type": "mobile" },
"is_disposable": false,
"is_virtual": false,
"verification_method": "whatsapp",
"verification_attempts": 1,
"verified_at": "2026-05-17T10:14:02Z",
"lifecycle": [
{
"type": "PHONE_VERIFICATION_MESSAGE_SENT",
"timestamp": "2026-05-17T10:13:51Z",
"details": { "status": "Success", "reason": null, "channel": "whatsapp", "actual_channel": "whatsapp" },
"fee": 0.02
},
{
"type": "PHONE_DELIVERY_DELIVERED",
"timestamp": "2026-05-17T10:13:52Z",
"details": { "channel": "whatsapp", "status": "delivered" },
"fee": 0
},
{
"type": "VALID_CODE_ENTERED",
"timestamp": "2026-05-17T10:14:02Z",
"details": { "code_tried": "482917", "status": "Approved" },
"fee": 0
},
{
"type": "PHONE_VERIFICATION_APPROVED",
"timestamp": "2026-05-17T10:14:02Z",
"details": null,
"fee": 0
}
],
"matches": [],
"node_id": "first_phone",
"warnings": []
}
ईमेल सत्यापन
हर ईमेल-सत्यापन प्रयास के लिए लौटाया जाता है। यह KYC और KYB दोनों सत्रों के लिएGET /v3/session/{sessionId}/decision/ में email_verifications[] के रूप में दिखता है। स्रोत: email_verification/serializers/email.py:149-164 (EmailV3Serializer, जो email_verification/serializers/email.py:38-146 पर EmailV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | नल योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें Status enum। | "Approved" |
email | string | नहीं | सबमिट किया गया ईमेल पता। | "maria.garcia@example.com" |
is_breached | boolean | नहीं | true, जब ईमेल किसी ज्ञात डेटा उल्लंघन में दिखे। | false |
breaches | array of objects | नहीं | is_breached true होने पर हर उल्लंघन का विवरण: { name, domain, logo_path, breach_date, description, is_verified, data_classes, breach_emails_count }। | [] |
is_disposable | boolean | नहीं | true, जब ईमेल किसी डिस्पोज़ेबल-मेल प्रदाता का हो। | false |
is_undeliverable | boolean | नहीं | true, जब SMTP डिलीवरी जाँच दिखाए कि इनबॉक्स मेल स्वीकार नहीं करता। | false |
verification_attempts | integer | नहीं | OTP जाँच के कुल प्रयास। | 1 |
verified_at | string (ISO 8601) | हाँ | वह समय-चिह्न जब OTP सफलतापूर्वक दर्ज किया गया। | "2026-05-17T10:15:22Z" |
lifecycle | array of objects | नहीं | कालक्रम के अनुसार घटनाएँ: भेजने के प्रयास, कोड जाँच, और अंतिम स्थिति घटना। हर घटना { type, timestamp, details, fee } है। घटना के प्रकार EmailEventChoices से आते हैं। | […] |
matches | array of objects | नहीं | सत्रों के बीच ईमेल मिलान। हर आइटम: { session_id, session_number, vendor_data, verification_date, email, status, is_blocklisted, api_service, source }। source session या list_entry होता है। | [] |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_email" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
email_intelligence | object | हाँ | ईमेल इंटेलिजेंस संकेत। केवल तब मौजूद, जब इस पते के लिए इंटेलिजेंस ऐड-ऑन चला हो। | |
email_social | object | हाँ | पते का सोशल फ़ुटप्रिंट। केवल तब मौजूद, जब सोशल फ़ुटप्रिंट ऐड-ऑन चला हो। |
{
"status": "Approved",
"email": "maria.garcia@example.com",
"is_breached": false,
"breaches": [],
"is_disposable": false,
"is_undeliverable": false,
"verification_attempts": 1,
"verified_at": "2026-05-17T10:15:22Z",
"lifecycle": [
{
"type": "EMAIL_VERIFICATION_MESSAGE_SENT",
"timestamp": "2026-05-17T10:15:11Z",
"details": { "status": "Success", "reason": null },
"fee": 0.02
},
{
"type": "VALID_CODE_ENTERED",
"timestamp": "2026-05-17T10:15:22Z",
"details": { "code_tried": "739204", "status": "Approved" },
"fee": 0
},
{
"type": "EMAIL_VERIFICATION_APPROVED",
"timestamp": "2026-05-17T10:15:22Z",
"details": null,
"fee": 0
}
],
"matches": [],
"node_id": "first_email",
"warnings": []
}
डेटाबेस सत्यापन
हर डेटाबेस लुकअप के लिए लौटाया जाता है, जो उपयोगकर्ता के सबमिट किए गए डेटा पर चलाया गया हो।GET /v3/session/{sessionId}/decision/ में database_validations[] के रूप में दिखता है। स्रोत: database_validation/serializers/database_validation.py:21-142 (DatabaseValidationV3Serializer, जो DatabaseValidationV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | नल हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
issuing_state | स्ट्रिंग (ISO 3166-1 alpha-3) | हाँ | वह देश जिसकी रजिस्ट्री से पूछताछ की गई थी। | "ESP" |
validation_type | स्ट्रिंग (enum) | नहीं | परिणाम की पुष्टि किस तरह हुई: one_by_one (एक ही सेवा का परिणाम), two_by_two (दो या अधिक अलग-अलग सेवाओं ने पहचान संख्या का स्वतंत्र रूप से पूर्ण मिलान किया), या not_enabled (वैलिडेटर छोड़ा गया या किसी प्रदाता ने जवाब नहीं दिया; निश्चित no_match फिर भी one_by_one देता है)। कभी null नहीं होता। स्रोत: DatabaseValidationChoices (common/config/choices.py:1097-1100)। | "one_by_one" |
screened_data | ऑब्जेक्ट | नहीं | रजिस्ट्री को भेजा गया डेटा। फ़ाइल फ़ील्ड (selfie, cnh_qr_code_image, document_image) पढ़ने के समय प्रीसाइन्ड किए जाते हैं। | { "document_number": "99999999R", "date_of_birth": "1990-05-12" } |
validations | ऑब्जेक्ट की सरणी | नहीं | हर उस कैटलॉग सेवा के लिए एक प्रविष्टि जिसने मिलान उत्पन्न किया। हर प्रविष्टि में service_id, service_name, validation (प्रदाता का निर्णय ऑब्जेक्ट), outcome_code, outcome_detail, और source_data (साफ़ की गई नागरिक प्रोफ़ाइल: full_name, gender, date_of_birth, photo (प्रीसाइन्ड URL), signature (प्रीसाइन्ड URL), …) शामिल हो सकते हैं। | […] |
errors | ऑब्जेक्ट की सरणी | हाँ | लुकअप विफल होने पर हर सेवा की त्रुटियाँ; खाली होने पर कुंजी पूरी तरह छोड़ दी जाती है। हर प्रविष्टि अपस्ट्रीम सेवा का त्रुटि ऑब्जेक्ट है, साथ में वह service_id जिसने इसे उत्पन्न किया। | [] |
match_type | स्ट्रिंग (enum) | हाँ | क्वेरी की गई सेवाओं का समग्र मिलान निर्णय: full_match, partial_match, या no_match (DatabaseValidationMatchTypeChoices, common/config/choices.py:1103-1106)। मूल्यांकन होने तक null रहता है। | "full_match" |
status | स्ट्रिंग | नहीं | देखें Status enum। | "Approved" |
node_id | स्ट्रिंग | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_db_validation" |
warnings | ऐरे | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"issuing_state": "ESP",
"validation_type": "one_by_one",
"screened_data": {
"document_number": "99999999R",
"date_of_birth": "1990-05-12",
"first_name": "María",
"last_name": "García López"
},
"validations": [
{
"service_id": "esp_dni",
"service_name": "Spain - DNI/NIE verification",
"validation": { "is_valid": true, "match_score": 100 },
"outcome_code": "MATCH",
"outcome_detail": "All identifiers match the registry record.",
"source_data": {
"full_name": "María García López",
"gender": "F",
"date_of_birth": "1990-05-12",
"photo": "https://<media-host>/.../registry_photo.jpg?signature=...",
"signature": null
}
}
],
"match_type": "full_match",
"status": "Approved",
"node_id": "first_db_validation",
"warnings": []
}
प्रश्नावली प्रतिक्रिया
हर प्रश्नावली सबमिशन के लिए लौटाई जाती है। KYC और KYB दोनों सत्रों के लिएGET /v3/session/{sessionId}/decision/ में questionnaire_responses[] के रूप में दिखती है। स्रोत: questionnaires/serializers/questionnaire.py:591-597 (QuestionnaireResponseV3Serializer, जो questionnaires/serializers/questionnaire.py:520-588 पर QuestionnaireResponseSerializer का विस्तार है)।
| फ़ील्ड | प्रकार | नल हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
questionnaire_id | स्ट्रिंग (UUID) | नहीं | उत्तर दिए गए प्रश्नावली संस्करण का पहचानकर्ता। | "6a0f1c2c-…" |
title | स्ट्रिंग | नहीं | प्रश्नावली का नाम, जैसा कंसोल में सेट किया गया। | "Customer risk profile" |
description | स्ट्रिंग | हाँ | प्रश्नावली का विवरण। | "Short risk-profile questions." |
languages | स्ट्रिंग की सरणी | नहीं | वे भाषा कोड जिनमें प्रश्नावली प्रकाशित है। | ["en", "es"] |
default_language | स्ट्रिंग | नहीं | बैकअप भाषा कोड। | "en" |
is_active | बूलियन | नहीं | क्या यह प्रश्नावली संस्करण सक्रिय है। | true |
is_simple_questionnaire | बूलियन | नहीं | true तब जब प्रश्नावली में कोई शाखा नहीं है (सपाट सूची)। | true |
questionnaire_group_id | स्ट्रिंग (UUID) | नहीं | एक ही प्रश्नावली के सभी संस्करणों में साझा पहचानकर्ता। | "a7c2c2c2-…" |
version | पूर्णांक | नहीं | सक्रिय टेम्पलेट का संस्करण संख्या। | 3 |
status | स्ट्रिंग | नहीं | इनमें से एक: Approved, In Review, Not Finished (प्रश्नावली-स्तर की अस्वीकृति In Review में मैप होती है)। | "Approved" |
published_at | स्ट्रिंग (ISO 8601) | हाँ | टेम्पलेट कब प्रकाशित हुआ था। | "2026-01-12T11:00:00Z" |
sections | ऑब्जेक्ट की सरणी | नहीं | ग्राफ़ ट्रैवर्सल और दृश्यता फ़िल्टर लागू करने के बाद क्रमबद्ध अनुभाग। हर अनुभाग { title, description, items[] } है (title और description शुरुआती SECTION_HEADER से आते हैं, जो पहले से अनुवादित हैं)। हर आइटम एक फ़ॉर्म तत्व है (uuid, value (नोड पहचानकर्ता), element_type, is_required, title, description, placeholder, choices, max_files, required_if, repeatable_config, साथ में answer फ़ील्ड, जो उत्तर न दिए जाने पर null होता है और HEADING/PARAGRAPH/SEPARATOR लेआउट आइटम पर छोड़ दिया जाता है)। फ़ाइल उत्तरों में { files: [<presigned URL>, …] } होता है। | […] |
node_id | स्ट्रिंग | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_questionnaire" |
{
"questionnaire_id": "6a0f1c2c-3b7d-4d2c-9eb6-fdc6c7c92ef9",
"title": "Customer risk profile",
"description": "Short risk-profile questions.",
"languages": ["en", "es"],
"default_language": "en",
"is_active": true,
"is_simple_questionnaire": true,
"questionnaire_group_id": "a7c2c2c2-1111-4d2c-9eb6-fdc6c7c92ef9",
"version": 3,
"status": "Approved",
"published_at": "2026-01-12T11:00:00Z",
"sections": [
{
"title": "Source of funds",
"description": null,
"items": [
{
"uuid": "4f1d5e2c-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"value": "q_source_of_funds",
"element_type": "SINGLE_CHOICE",
"is_required": true,
"title": "What is your main source of funds?",
"description": null,
"placeholder": null,
"choices": [
{ "label": "Salary", "value": "salary" },
{ "label": "Business income", "value": "business" },
{ "label": "Investments", "value": "investments" }
],
"max_files": 1,
"required_if": null,
"repeatable_config": null,
"answer": { "value": "salary" }
}
]
}
],
"node_id": "first_questionnaire"
}
ई-हस्ताक्षर
हर ई-हस्ताक्षर चरण के हर हस्ताक्षरकर्ता के लिए लौटाया जाता है। KYC और KYB दोनों सत्रों के लिएGET /v3/session/{sessionId}/decision/ में signatures[] के रूप में दिखता है, और केवल तब जब वर्कफ़्लो में यह चरण हो। अन्य रिपोर्ट ऑब्जेक्ट के विपरीत, इसका status हस्ताक्षर का चरण है और परिणाम verdict में है। इसके warnings[] आइटम { code, node_id } हैं, न कि चेतावनी ऑब्जेक्ट।
| फ़ील्ड | प्रकार | नल हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
id | स्ट्रिंग (UUID) | नहीं | हस्ताक्षरकर्ता का हस्ताक्षर। इसे evidence और validate रूट्स के लिए signature_id के रूप में उपयोग करें। | "0e6c2a8e-…" |
node_id | स्ट्रिंग | नहीं | वर्कफ़्लो नोड पहचानकर्ता। | "feature_signature" |
status | स्ट्रिंग | नहीं | हस्ताक्षर चरण: intro, review, code, signing, signed या declined। केवल signed का अर्थ है कि दस्तावेज़ पर हस्ताक्षर हो चुके हैं। | "signed" |
verdict | स्ट्रिंग | नहीं | Not Finished, Approved, In Review या Declined। | "Approved" |
level | स्ट्रिंग | नहीं | simple (डिफ़ॉल्ट) या aes। qes एक ऐड-ऑन है जो अभी उपलब्ध नहीं है। | "aes" |
format | स्ट्रिंग | नहीं | सरल हस्ताक्षर के लिए pdf, उन्नत (AES) के लिए pades। | "pades" |
profile | स्ट्रिंग | हाँ | उन्नत (AES) के हस्ताक्षरित होने पर PAdES-B-LT, अन्यथा null। | "PAdES-B-LT" |
signer | ऑब्जेक्ट | नहीं | { name, capacity, company, role, roles, identity_session_id }। capacity self (KYC) या company (KYB) होता है। | { "name": "Jane Doe", "capacity": "self", … } |
identity_used | ऑब्जेक्ट | नहीं | { session_id, kyc_id, verified, expected_name }: वह सत्यापित पहचान जिस पर हस्ताक्षर निर्भर है। बिना सत्यापित पहचान वाले सरल हस्ताक्षर के लिए खाली। | { "verified": true, … } |
certificate | ऑब्जेक्ट | हाँ | { issuer, issued_to, serial, valid_from, valid_until }। हस्ताक्षर होने तक null, और सरल हस्ताक्षर के लिए हमेशा null। | { "serial": "5A3F9C21", … } |
confirmation | ऑब्जेक्ट | नहीं | { channel, destination, confirmed_at, attempts }। destination मास्क किया गया होता है; attempts दर्ज किए गए कोड की गिनती है, जिसमें सही कोड भी शामिल है। सरल हस्ताक्षर में कोई कोड नहीं होता, इसलिए channel और destination null होते हैं। | { "channel": "email", … } |
timestamp | ऑब्जेक्ट | हाँ | { time, qualified, valid }। AES के लिए qualified हमेशा false होता है। हस्ताक्षर होने तक null रहता है, और सरल हस्ताक्षर के लिए हमेशा null होता है। | { "qualified": false, … } |
documents | ऑब्जेक्ट की ऐरे | नहीं | { id, uuid, title, file_name, pages, size_bytes, sha256_original, sha256_signed, status, opened_at, read_at, read_to_end, consented_at, consent, signed_file, mode, source_format, conversion, fields }। status signed, declined, not_signed या not_reached होता है। mode fields या read_and_agree होता है। source_format pdf या docx होता है; conversion मूल Word फ़ाइल का विवरण देता है, या PDF के लिए null होता है। | […] |
documents[].fields | ऑब्जेक्ट की ऐरे | नहीं | दस्तावेज़ के हर फ़ील्ड के लिए { key, type, role, label, page, x, y, width, height, required, value, display_value, value_source, filled_at, image_url, value_unavailable_reason }। value एक स्ट्रिंग है, चेकबॉक्स के लिए बूलियन है, या लागू किए गए हस्ताक्षर या आद्याक्षर के लिए true है। जिस दस्तावेज़ में फ़ील्ड नहीं हैं, उसके लिए खाली। | […] |
adopted_signature | ऑब्जेक्ट | हाँ | { method, font, adopted_at }: वे हस्ताक्षर और आद्याक्षर जिन्हें हस्ताक्षरकर्ता ने अपनाया। method typed या drawn होता है; font टाइप किए गए हस्ताक्षर की हस्तलेखन शैली है। अपनाए जाने तक null। | { "method": "drawn", … } |
electronic_signature_consent_at | स्ट्रिंग (ISO 8601) | हाँ | जब हस्ताक्षरकर्ता ने दस्तावेज़ों पर इलेक्ट्रॉनिक रूप से हस्ताक्षर करने की सहमति दी। जब किसी दस्तावेज़ में फ़ील्ड हों, तब सेट होता है। | "2026-11-03T10:41:40Z" |
evidence_file | स्ट्रिंग | हाँ | हस्ताक्षर होने के बाद साक्ष्य PDF का पथ। | "/v3/session/…/evidence/?signature_id=…" |
warnings | ऑब्जेक्ट की ऐरे | नहीं | { code, node_id }, जिसमें code इनमें से एक होता है: SIGNATURE_DECLINED, SIGNATURE_OTP_FAILED, SIGNATURE_NAME_MISMATCH, SIGNATURE_IDENTITY_NOT_VERIFIED, SIGNATURE_DOCUMENT_CHANGED। | [] |
validation | ऑब्जेक्ट | हाँ | { valid, checked_at, documents[] }: हस्ताक्षरित दस्तावेज़ों की अंतिम क्रिप्टोग्राफ़िक जाँच। हस्ताक्षर होने तक null। जब हस्ताक्षर की परिणति की पुष्टि नहीं हो सकी, तब { valid: null, reason: "signature_provider_outcome_unknown", checked_at }। | { "valid": true, … } |
declined_at | स्ट्रिंग (ISO 8601) | हाँ | जब हस्ताक्षरकर्ता ने अस्वीकार किया। | null |
declined_action | स्ट्रिंग | नहीं | चरण की signature_declined_action सेटिंग। | "REVIEW" |
signed_at | स्ट्रिंग (ISO 8601) | हाँ | जब दस्तावेज़ों पर हस्ताक्षर हुए। | "2026-11-03T10:42:24Z" |
expires_at | स्ट्रिंग (ISO 8601) | नहीं | जब हस्ताक्षर लिंक काम करना बंद करता है। | "2026-11-10T10:30:00Z" |
email_sent_at | स्ट्रिंग (ISO 8601) | हाँ | जब हस्ताक्षरकर्ता को हस्ताक्षरित प्रति ईमेल की गई। | "2026-11-03T10:42:30Z" |
email_unavailable_reason | स्ट्रिंग | हाँ | जब प्रति का अनुरोध किया गया था, तब कोई प्रति ईमेल क्यों नहीं की गई। | null |
ip_address | स्ट्रिंग | हाँ | जब हस्ताक्षरकर्ता ने अपना कोड माँगा, तब उसका IP पता। | "203.0.113.10" |
place | स्ट्रिंग | हाँ | एकत्र नहीं किया जाता: हमेशा null। | null |
place_unavailable_reason | स्ट्रिंग | हाँ | not_collected। | "not_collected" |
आयु अनुमान
यह स्टैंडअलोन आयु अनुमान API (POST /v3/age-estimation/) से लौटाया जाता है। रिस्पॉन्स में Liveness check के आकार का एक उपसमुच्चय age_estimation एनवेलप के अंतर्गत होता है: status, method, score, age_estimation, warnings। साथ ही केवल स्टैंडअलोन के लिए user_image फ़ेस-डिटेक्शन ब्लॉक भी होता है। इसमें नहीं होते reference_image, video_url, matches, face_quality या face_luminance। वर्कफ़्लो सत्रों में अलग ऐरे नहीं होती: अनुमानित आयु GET /v3/session/{sessionId}/decision/ में liveness_checks[].age_estimation के रूप में दिखती है। स्रोत: apis/serializers/age_estimation.py:50-55 (AgeEstimationResponseSerializer), एनवेलप apis/views/age_estimation.py:138-174 में बनाया जाता है।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
request_id | स्ट्रिंग (UUID) | नहीं | जब save_api_request=true हो (डिफ़ॉल्ट), तब सहेजा गया सत्र ID; अन्यथा एक अस्थायी सहसंबंध UUID। | "3b1f1e2c-…" |
age_estimation | ऑब्जेक्ट | नहीं | परिणाम एनवेलप: status (Approved / Declined), method (हमेशा PASSIVE), score (लाइवनेस 0-100, null हो सकता है), age_estimation (सबसे बड़े चेहरे की अनुमानित आयु वर्षों में, null हो सकती है), user_image (entities[] जिसमें हर चेहरे के लिए age, bbox [x_min, y_min, x_max, y_max], confidence, gender; साथ में best_angle), warnings[]। | { … } |
vendor_data | स्ट्रिंग | हाँ | अनुरोध से लौटाया गया vendor_data। | null |
metadata | ऑब्जेक्ट | हाँ | अनुरोध से लौटाया गया metadata। | null |
created_at | स्ट्रिंग (ISO 8601) | नहीं | सर्वर-साइड अनुरोध टाइमस्टैम्प। | "2026-05-17T10:22:13.512941+00:00" |
{
"request_id": "3b1f1e2c-7777-4d2c-9eb6-fdc6c7c92ef9",
"age_estimation": {
"status": "Approved",
"method": "PASSIVE",
"score": 94.10,
"age_estimation": 28.7,
"user_image": {
"entities": [
{ "age": 28.7, "bbox": [40, 40, 100, 100], "confidence": 0.72, "gender": "male" }
],
"best_angle": 0
},
"warnings": []
},
"vendor_data": null,
"metadata": null,
"created_at": "2026-05-17T10:22:13.512941+00:00"
}
बायोमेट्रिक प्रमाणीकरण
बायोमेट्रिक प्रमाणीकरण वही लाइवनेस डिटेक्शन + चेहरा मिलान पाइपलाइन चलाता है जो स्टैंडर्ड KYC में इस्तेमाल होती है, लेकिन इसे कैप्चर किए गए चेहरे की तुलना हाल ही में OCR किए गए दस्तावेज़ के पोर्ट्रेट के बजाय मौजूदा उपयोगकर्ता की संदर्भ छवि से करने के लिए कॉन्फ़िगर किया गया है। इसके लिए कोई अलग सीरियलाइज़र नहीं है:GET /v3/session/{sessionId}/decision/ liveness_checks[] और face_matches[] के अंतर्गत स्टैंडर्ड लाइवनेस जाँच और चेहरा मिलान ऑब्जेक्ट लौटाता है। सत्र का वर्कफ़्लो workflow_type = "biometric_authentication" (WorkflowTypeChoices, common/config/choices.py:636) पर कॉन्फ़िगर किया जाता है।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
liveness_checks | लाइवनेस जाँच की ऐरे | नहीं | प्रमाणीकरण प्रयास के लिए लाइवनेस परिणाम। | [ { "status": "Approved", … } ] |
face_matches | चेहरा मिलान की ऐरे | नहीं | दर्ज संदर्भ के विरुद्ध मिलान परिणाम। source_image_session_id सत्र के अपने session_id पर सेट होता है: संदर्भ चेहरा (दिया गया portrait_image, या portrait_image छोड़े जाने पर vendor_data के ज़रिए पुनः उपयोग किया गया संग्रहीत चेहरा) प्रमाणीकरण सत्र के अंतर्गत ही दर्ज होता है (face/views/face.py:656-659)। | [ { "status": "Approved", "source_image_session_id": "…", … } ] |
status | string | नहीं | ऊपरी स्तर की सत्र स्थिति (देखें स्टेटस enum)। | "Approved" |
{
"session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"status": "Approved",
"liveness_checks": [
{
"status": "Approved",
"method": "PASSIVE",
"score": 95.10,
"reference_image": "https://<media-host>/.../reference.jpg?signature=...",
"video_url": null,
"age_estimation": null,
"matches": [],
"face_quality": 91.20,
"face_luminance": 53.10,
"node_id": "biometric_auth_liveness",
"warnings": []
}
],
"face_matches": [
{
"status": "Approved",
"score": 98.42,
"source_image_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"source_image": "https://<media-host>/.../source.jpg?signature=...",
"target_image": "https://<media-host>/.../target.jpg?signature=...",
"node_id": "biometric_auth_face_match",
"warnings": []
}
]
}
KYB रजिस्ट्री
KYB वर्कफ़्लो में रजिस्ट्री से पुष्ट हर कंपनी के लिए लौटाया जाता है। व्यावसायिक सत्रों के लिएGET /v3/session/{sessionId}/decision/ में registry_checks[] के रूप में दिखता है। स्रोत: kyb/serializers/kyb.py:939-964 (RegistryCheckV3Serializer)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्टेटस enum। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_registry" |
data_resolved | boolean | नहीं | true जब रजिस्ट्री से डेटा लाना पूरा हो चुका हो (या is_from_registry false हो, यानी डेटा मैन्युअल रूप से दर्ज किया गया हो)। | true |
company | object | नहीं | पूरा कंपनी payload: नीचे कंपनी ऑब्जेक्ट देखें। | { … } |
ownership_structure | object | हाँ | रजिस्ट्री द्वारा सिद्ध कैप टेबल: shareholders[] और beneficial_owners[], हर स्वामी के रजिस्ट्री पहचान, हिस्सेदारी और मानक shareholding के साथ। | { "shareholders": [...], "beneficial_owners": [] } |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
कंपनी ऑब्जेक्ट
स्रोत:kyb/serializers/kyb.py:220-321 (KYBCompanyResponseSerializer)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण |
|---|---|---|---|
uuid | string (UUID) | नहीं | आंतरिक कंपनी पहचानकर्ता। |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता। |
status | string | नहीं | फ़ीचर स्थिति (FeatureStatusChoices)। |
registry_status | string | हाँ | रजिस्ट्री से मिली कंपनी की स्थिति (active, dissolved, …)। |
data_resolved | boolean | नहीं | मूल ऑब्जेक्ट में दी गई परिभाषा के समान। |
company_name | string | हाँ | पंजीकृत कंपनी का नाम। |
registration_number | string | हाँ | रजिस्ट्री पहचानकर्ता। |
country_code | string (ISO 3166-1 alpha-2) | हाँ | निगमन देश। |
region | string | हाँ | जहाँ लागू हो, ISO 3166-2 उप-क्षेत्र (जैसे US-CA)। |
company_type | string | हाँ | कानूनी स्वरूप (LLC, SL, …)। |
incorporation_date | string (YYYY-MM-DD) | हाँ | निगमन की तिथि। |
registered_address | string | हाँ | पंजीकृत कानूनी पता। |
tax_number | string | हाँ | कर / VAT पहचानकर्ता। |
risk_level | string | हाँ | प्रदाता द्वारा दी गई जोखिम रेटिंग। |
verification_status | string | हाँ | आंतरिक सत्यापन स्थिति enum। |
is_from_registry | boolean | नहीं | true जब डेटा रजिस्ट्री से लिया गया हो (मैन्युअल प्रविष्टि के विपरीत)। |
fetch_status | string | हाँ | pending, resolved, failed। |
alternative_names | string | हाँ | कॉमा से अलग किए गए वैकल्पिक व्यापारिक नाम। |
nature_of_business | string | हाँ | व्यावसायिक गतिविधि का मुक्त-पाठ विवरण। |
registered_capital | string | हाँ | पंजीकृत पूँजी, मानव-पठनीय स्ट्रिंग के रूप में। |
registered_capital_amount | string (decimal) | हाँ | विश्लेषित पंजीकृत पूँजी राशि। |
registered_capital_currency | string (ISO 4217) | हाँ | मुद्रा कोड। |
website | string (URL) | हाँ | कंपनी की वेबसाइट। |
email | string | हाँ | सार्वजनिक संपर्क ईमेल। |
phone | string | हाँ | सार्वजनिक संपर्क फ़ोन। |
legal_entity_identifier | string | हाँ | उपलब्ध होने पर LEI। |
location_of_registration | string | हाँ | रजिस्ट्री कार्यालय / क्षेत्र। |
vat_number | string | हाँ | कंपनी के लिए जमा किया गया VAT नंबर। |
vat_validation_status | string | नहीं | VAT नंबर के सत्यापन का परिणाम, या कोई न होने पर tax_number का: valid, invalid, format_valid, invalid_format, could_not_validate, या not_applicable। देखें VAT और कर पहचान सत्यापन। |
vat_validated_number | string | हाँ | जाँची गई संख्या, जैसी स्रोत उसे जानता है। |
vat_validation_source | string | हाँ | वह स्रोत जिसने स्थिति तय की: eu_vies, pl_vat_white_list, no_brreg, ch_uid_register, br_receita_federal, co_rues, cr_hacienda, ec_sri, py_dnit, या format_rules। |
vat_validated_name | string | हाँ | स्रोत के साथ पंजीकृत नाम (यदि स्रोत कोई नाम नहीं बताता तो खाली)। |
vat_validated_address | string | हाँ | स्रोत के साथ पंजीकृत पता (प्रकट न किए जाने पर खाली)। |
vat_checked_at | string (ISO 8601) | हाँ | जाँच का टाइमस्टैम्प; कोई जाँच न चलने पर null। |
financial_summary | object | हाँ | रजिस्ट्री द्वारा दिए जाने पर नवीनतम वित्तीय मुख्य बिंदुओं का स्नैपशॉट। |
officers | array of objects | नहीं | B2C-सुरक्षित अधिकारी सूची: { uuid, name, designation, role, nationality, is_active, kyc_status, kyc_session_url }। |
beneficial_owners | array of objects | नहीं | B2C-सुरक्षित UBO सूची: { uuid, name, first_name, last_name, entity_type, roles, ownership_min_shares, ownership_max_shares, is_active, kyc_status, kyc_session_url, effective_ownership_percent }। |
addresses | array of objects | हाँ | रजिस्ट्री से हर पते का विवरण। |
industries | array of objects | हाँ | SIC/NAICS-शैली के वर्गीकरण। |
accounts | array of objects | हाँ | दाखिल किए गए खातों का मेटाडेटा। |
registry_data | object | हाँ | Didit का सामान्यीकृत रजिस्ट्री विवरण (स्वामित्व परिणाम, कंसोल सुधार, ऐसे रजिस्ट्री तथ्य जिनका अपना फ़ील्ड नहीं है)। यह स्थिर अनुबंध नहीं है। |
user_provided_data | object | हाँ | उपयोगकर्ता द्वारा संपादित फ़ील्ड का स्नैपशॉट। |
confirmed_by_user_at | string (ISO 8601) | हाँ | वह टाइमस्टैम्प जब उपयोगकर्ता ने निकाले गए डेटा की पुष्टि की। |
last_console_edit_at | string (ISO 8601) | हाँ | अंतिम कंसोल संपादन का टाइमस्टैम्प। |
is_editable | boolean | नहीं | true जब तक रजिस्ट्री-स्रोत डेटा को अंतिम उपयोगकर्ता द्वारा संपादित किया जा सकता है। |
{
"status": "Approved",
"node_id": "first_registry",
"data_resolved": true,
"company": {
"uuid": "b1f1e2c2-9999-4d2c-9eb6-fdc6c7c92ef9",
"node_id": "first_registry",
"status": "Approved",
"registry_status": "active",
"data_resolved": true,
"company_name": "Sante Clinics SL",
"registration_number": "B12345678",
"country_code": "ES",
"region": null,
"company_type": "SL",
"incorporation_date": "2018-03-22",
"registered_address": "Calle Mayor 1, 28001 Madrid, Spain",
"tax_number": "B12345678",
"risk_level": "low",
"verification_status": "verified",
"is_from_registry": true,
"fetch_status": "resolved",
"alternative_names": "Sante Clinics",
"nature_of_business": "Medical clinic operations",
"registered_capital": "EUR 50,000",
"registered_capital_amount": "50000.00",
"registered_capital_currency": "EUR",
"website": "https://santeclinics.com",
"email": "info@santeclinics.com",
"phone": "+34911223344",
"legal_entity_identifier": null,
"location_of_registration": "Registro Mercantil de Madrid",
"vat_number": "ESB12345678",
"vat_validation_status": "valid",
"vat_validated_name": "SANTE CLINICS SL",
"vat_validated_address": "CALLE MAYOR 1, 28001 MADRID",
"vat_checked_at": "2026-05-17T10:11:05Z",
"financial_summary": null,
"officers": [
{
"uuid": "c1f1e2c2-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"designation": "Administrador único",
"role": "Director",
"nationality": "ESP",
"is_active": true,
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…"
}
],
"beneficial_owners": [
{
"uuid": "d1f1e2c2-bbbb-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"first_name": "María",
"last_name": "García López",
"entity_type": "person",
"roles": ["UBO"],
"ownership_min_shares": "75.00",
"ownership_max_shares": "75.00",
"is_active": true,
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"effective_ownership_percent": 75.0
}
],
"addresses": [],
"industries": [],
"accounts": [],
"registry_data": {},
"user_provided_data": {},
"confirmed_by_user_at": "2026-05-17T10:11:02Z",
"last_console_edit_at": null,
"is_editable": false
},
"ownership_structure": null,
"warnings": []
}
KYB दस्तावेज़
हर उस नोड के लिए लौटाया जाता है जो KYB सहायक दस्तावेज़ एकत्र करता है। व्यावसायिक सत्रों के लिएGET /v3/session/{sessionId}/decision/ में document_verifications[] के रूप में दिखता है: हर node_id के लिए एक प्रविष्टि, जिसमें items[] में अपलोड किया गया हर दस्तावेज़ सूचीबद्ध होता है। स्रोत: kyb/serializers/kyb.py:1053-1068 (DocumentVerificationV3Serializer); हर आइटम kyb/serializers/kyb.py:811-851 (KYBDocumentResponseSerializer) का अनुसरण करता है।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | इस नोड के दस्तावेज़ों की कुल स्थिति: Approved तभी जब हर पाइपलाइन दस्तावेज़ स्वीकृत हो; Declined यदि कोई भी दस्तावेज़ अस्वीकृत हो; अन्यथा In Review; लंबित होने पर Not Finished। देखें स्टेटस एनम। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_kyb_documents" |
items | KYB दस्तावेज़ आइटम ऑब्जेक्ट की ऐरे | नहीं | हर अपलोड किए गए या माँगे गए दस्तावेज़ के लिए एक प्रविष्टि। | […] |
groups | object | नहीं | प्रति-दस्तावेज़-समूह गिनती: { <group_name>: { total, approved, pending, declined, in_review, other, missing } }। | { "incorporation_certificate": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 } } |
required_groups | स्ट्रिंग की ऐरे | नहीं | वर्कफ़्लो कॉन्फ़िगरेशन द्वारा आवश्यक दस्तावेज़ समूह। | ["incorporation_certificate", "shareholder_register"] |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
KYB दस्तावेज़ आइटम ऑब्जेक्ट
| फ़ील्ड | प्रकार | नल योग्य | विवरण |
|---|---|---|---|
uuid | string (UUID) | नहीं | आंतरिक दस्तावेज़ पहचानकर्ता। |
document_type | string | हाँ | उच्च-स्तरीय समूह (incorporation_certificate, shareholder_register, …)। |
document_subtype | string | हाँ | प्रदाता-विशिष्ट उप-प्रकार। |
document_group | string | हाँ | document_type का प्रतिबिंब (स्पष्टता के लिए उपनाम रखा गया)। |
file_url | string (URL) | हाँ | साफ़ की गई फ़ाइल का प्रीसाइंड URL। |
original_filename | string | हाँ | अपलोड के समय की फ़ाइल का नाम। |
file_size | integer | हाँ | फ़ाइल का आकार बाइट में। |
status | string | नहीं | प्रति-दस्तावेज़ स्थिति (FeatureStatusChoices)। |
created_at | string (ISO 8601) | नहीं | अपलोड का टाइमस्टैम्प। |
cross_check_result | object | हाँ | रजिस्ट्री / अन्य दस्तावेज़ों के साथ क्रॉस-चेक का निर्णय। |
document_metadata | object | हाँ | POA के document_metadata जैसा ही फ़िल्टर किया गया मेटाडेटा ढाँचा। |
description | string | हाँ | समीक्षक या सिस्टम द्वारा दिया गया विवरण। |
is_requested | boolean | नहीं | जब वर्कफ़्लो को यह दस्तावेज़ अपेक्षित था तो true। |
ocr_data | object | हाँ | उपलब्ध होने पर OCR से निकाले गए फ़ील्ड। |
is_console_upload | boolean | नहीं | जब दस्तावेज़ कंसोल समीक्षक द्वारा अपलोड किया गया हो तो true (कुल निर्णय से बाहर रखा जाता है)। |
is_confirmed | boolean | नहीं | जब समीक्षक ने दस्तावेज़ की स्पष्ट पुष्टि की हो तो true। |
{
"status": "Approved",
"node_id": "first_kyb_documents",
"items": [
{
"uuid": "e1f1e2c2-cccc-4d2c-9eb6-fdc6c7c92ef9",
"document_type": "incorporation_certificate",
"document_subtype": "registro_mercantil_extract",
"document_group": "incorporation_certificate",
"file_url": "https://<media-host>/.../incorporation.pdf?signature=...",
"original_filename": "incorporation_certificate.pdf",
"file_size": 256412,
"status": "Approved",
"created_at": "2026-05-17T10:08:00Z",
"cross_check_result": { "matches_registry_name": true, "matches_registration_number": true },
"document_metadata": {
"file_size": 256412,
"content_type": "application/pdf",
"is_signed": true,
"is_tampered": false
},
"description": null,
"is_requested": true,
"ocr_data": { "company_name": "Sante Clinics SL", "registration_number": "B12345678" },
"is_console_upload": false,
"is_confirmed": true
}
],
"groups": {
"incorporation_certificate": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 }
},
"required_groups": ["incorporation_certificate", "shareholder_register"],
"warnings": []
}
KYB प्रमुख व्यक्ति
यह KYB वर्कफ़्लो के हर प्रमुख व्यक्ति नोड के लिए लौटाया जाता है। व्यावसायिक सत्रों के लिएGET /v3/session/{sessionId}/decision/ में यह key_people_checks[] के रूप में दिखता है। स्रोत: kyb/serializers/kyb.py:967-1050 (KeyPeopleCheckV3Serializer)।
| फ़ील्ड | प्रकार | नल योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें स्टेटस एनम। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_key_people" |
registry | object | नहीं | रजिस्ट्री से निकाला गया { officers[], beneficial_owners[] }। अधिकारी KYBPersonResponseSerializer (kyb/serializers/kyb.py:533-645) का पालन करते हैं; वास्तविक स्वामी KYBBeneficialOwnerResponseSerializer (kyb/serializers/kyb.py:648-788) का पालन करते हैं, जिसमें date_of_birth, country_of_birth, email, company_name, registration_number, entity_type, roles, ownership_min_shares, ownership_max_shares, child_beneficial_owners, effective_ownership_percent जुड़े होते हैं। दोनों में प्रति-पक्ष AML + KYC एनरिचमेंट शामिल है (aml_status, kyc_status, kyc_session_url, kyc_session_id, verification_workflow_type, verification_workflow_id, verification_workflow_label, verification_workflow_features, didit_internal_id, kyc_document_type, kyc_nationality, kyc_liveness_passed, kyc_verified_at, kyc_aml_categories, kyc_notification_sent_at)। | { "officers": [...], "beneficial_owners": [...] } |
submitted | object | नहीं | { parties[] } - व्यवसाय द्वारा प्रमुख-व्यक्ति फ़्लो के माध्यम से पुष्टि या सबमिट की गई प्रविष्टियाँ (source=USER वाली BusinessParty पंक्तियाँ)। हर पक्ष BusinessPartySubmissionResponseSerializer (kyb/serializers/party.py:146-194) का पालन करता है: uuid, entity_type, source, name, first_name, last_name, company_name, registration_number, email, nationality, phone_number, date_of_birth, position, custom_fields, is_active, is_skipped, requires_verification, roles[] ({ role, ownership_percent, voting_percent }), kyc_session_id, kyc_session_status, kyc_session_url, kyc_session_deleted, kyb_sub_session_id, kyb_sub_session_status, kyb_sub_session_url, kyb_sub_session_deleted, verification_workflow_type, verification_workflow_id, verification_workflow_label, verification_workflow_features, didit_internal_id। kyc_session_deleted / kyb_sub_session_deleted उस चाइल्ड सत्र को चिह्नित करते हैं जो हटा दिया गया है: उसकी स्थिति जैसी थी वैसी ही जमी रहती है, संबंधित *_session_url null लौटता है क्योंकि लिंक अब हल नहीं होता, और वह पक्ष मूल सत्र को रोकना बंद कर देता है (इसके बजाय जाँच In Review पर आ जाती है)। इसे साफ़ करने के लिए PATCH /v3/session/{id}/kyb/parties/{party_uuid}/ का उपयोग करें। | { "parties": [...] } |
ubo_kyc_summary | object | हाँ | लिंक्ड KYC वाले सक्रिय UBO की गिनती: { total, approved, flagged, pending }। जब किसी भी सक्रिय UBO से KYC लिंक न हो तो null। | { "total": 2, "approved": 2, "flagged": 0, "pending": 0 } |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"status": "Approved",
"node_id": "first_key_people",
"registry": {
"officers": [
{
"uuid": "c1f1e2c2-aaaa-4d2c-9eb6-fdc6c7c92ef9",
"name": "María García López",
"designation": "Administrador único",
"role": "Director",
"nationality": "ESP",
"appointment_date": "2018-03-22",
"termination_date": null,
"is_active": true,
"address": "Calle Mayor 1, 28001 Madrid",
"aml_status": "Approved",
"kyc_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"kyc_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"verification_workflow_type": "kyc",
"verification_workflow_id": "11111111-1111-1111-1111-111111111111",
"verification_workflow_label": "KYB officer KYC",
"verification_workflow_features": [
{ "feature": "ID_VERIFICATION", "status": "Approved" },
{ "feature": "LIVENESS", "status": "Approved" },
{ "feature": "FACE_MATCH", "status": "Approved" }
],
"didit_internal_id": "user-12345",
"kyc_document_type": "Passport",
"kyc_nationality": "ESP",
"kyc_liveness_passed": true,
"kyc_verified_at": "2026-05-17T10:10:11Z",
"kyc_aml_categories": [],
"kyc_notification_sent_at": "2026-05-15T08:00:00Z"
}
],
"beneficial_owners": []
},
"submitted": {
"parties": [
{
"uuid": "d1f1e2c2-bbbb-4d2c-9eb6-fdc6c7c92ef9",
"entity_type": "person",
"source": "USER",
"name": "María García López",
"first_name": "María",
"last_name": "García López",
"company_name": null,
"registration_number": null,
"email": "maria.garcia@example.com",
"nationality": "ESP",
"phone_number": null,
"date_of_birth": "1990-05-12",
"position": "Administrador único",
"custom_fields": {},
"is_active": true,
"is_skipped": false,
"requires_verification": true,
"roles": [
{ "role": "UBO", "ownership_percent": 75.0, "voting_percent": null }
],
"kyc_session_id": "9b1f1e2c-8888-4d2c-9eb6-fdc6c7c92ef9",
"kyc_session_status": "Approved",
"kyc_session_url": "https://verify.didit.me/s/…",
"kyb_sub_session_id": null,
"kyb_sub_session_status": null,
"kyb_sub_session_url": null,
"verification_workflow_type": "kyc",
"verification_workflow_id": "11111111-1111-1111-1111-111111111111",
"verification_workflow_label": "KYB officer KYC",
"verification_workflow_features": [
{ "feature": "ID_VERIFICATION", "status": "Approved" },
{ "feature": "LIVENESS", "status": "Approved" }
],
"didit_internal_id": "user-12345"
}
]
},
"ubo_kyc_summary": { "total": 1, "approved": 1, "flagged": 0, "pending": 0 },
"warnings": []
}
निर्णय-स्तर के फ़ील्ड
ये कुंजियाँGET /v3/session/{sessionId}/decision/ पर सुविधा ऐरे के साथ और webhook के decision के भीतर होती हैं।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण |
|---|---|---|---|
status_override | object | हाँ | किसी समीक्षक द्वारा status को हाथ से सेट किए जाने के बाद { overridden_at, automatic_status }; जब स्थिति स्वचालित होती है तब null। |
decision_trace | object | नहीं | स्थिति तक कैसे पहुँचा गया: status, decided_by (manual, automatic या investigator), decided_at, automatic_status, terminal_node_id, actor, warning_counts और status_warnings। |
linked_records | object | हाँ | same_face, earlier_verifications और networks के सारांश; दिखाने के लिए कुछ न हो तो null। |
biometric_retention | object | नहीं | { jurisdictions, deletes_at }। deletes_at वह तिथि है जब सत्र का लाइव बायोमेट्रिक डेटा हटाया जाता है, और जब अभी कोई तिथि लागू नहीं होती तब null। |
database_validation_not_performed_reason | object | हाँ | { code, message }, जो बताता है कि कॉन्फ़िगर किए गए डेटाबेस सत्यापन से कोई परिणाम क्यों नहीं मिला। |
assignee, waiting_since, sla_due_at | object, datetime | हाँ | वह Console समीक्षक जिसके पास सत्र है और उसकी समीक्षा घड़ी; सत्र In Review न हो तब तक घड़ी null रहती है। |
shared_from_session, shared_from_session_number | UUID, integer | हाँ | आयातित सत्र का स्रोत सत्र। |
sandbox_scenario | string | हाँ | वह परिदृश्य जिसके साथ सैंडबॉक्स सत्र बनाया गया था। |
fraud_check | object | हाँ | Fraud Check API का परिणाम; अन्य हर सत्र के लिए null। |
full_session_video, full_session_video_recorded_at | URL, datetime | हाँ | रिकॉर्डिंग और वह कब बनाई गई। ये केवल तब लौटाए जाते हैं जब आपका संगठन पूरे सत्र का वीडियो रिकॉर्ड करता है। |
बायोमेट्रिक सहमति
हर उपयोगकर्ता सत्यापन निर्णय और सत्र webhook में एक हीbiometric_consent ऑब्जेक्ट होता है (ऐरे नहीं). इसमें लिखा होता है कि सत्र को स्पष्ट बायोमेट्रिक सहमति चाहिए थी या नहीं, क्यों चाहिए थी, और उत्तर का साक्ष्य क्या है. जब सत्र का मूल्यांकन कभी नहीं हुआ, उदाहरण के लिए चेहरा कैप्चर के बिना वर्कफ़्लो, तब यह null होता है. स्रोत: BiometricConsentDecisionSerializer (sessions/serializers/biometric_consent.py). किन परिस्थितियों में यह चरण दिखता है और हर मामले का क्या अर्थ है, यह बायोमेट्रिक सहमति में समझाया गया है.
जिन फ़ील्ड का कोई दर्ज मान नहीं है, वे null होते हैं, कभी खाली स्ट्रिंग नहीं.
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
required | boolean | क्या सत्र को स्पष्ट बायोमेट्रिक सहमति लेनी होगी. यह कभी वापस false पर नहीं जाता. |
trigger | string (enum) | null | सहमति क्यों आवश्यक है, या यह कैसे पूरी हुई: declared_state, ip_state, ip_unknown, document_issuer, forced (एप्लिकेशन का मोड Always है), customer_collected (आपने सत्र बनाते समय biometric_consent भेजा था). सहमति आवश्यक न होने पर null. |
status | string (enum) | not_required, pending (आवश्यक, दी नहीं गई), given, declined (अस्वीकृति दर्ज की गई; आज कोई Didit स्क्रीन अस्वीकृति का विकल्प नहीं देती). |
given_at | string (ISO 8601) | null | सहमति कब दी गई. customer_collected के लिए, वह given_at जो आपने भेजा. |
declined_at | string (ISO 8601) | null | अस्वीकृति कब दर्ज की गई. |
text_version | string | null | उस सहमति पाठ का संस्करण आईडी जिसका व्यक्ति ने उत्तर दिया, या जो आपने भेजा. |
text_hash | string | null | दिखाए गए सटीक पाठ का SHA-256 (hex), उसी भाषा में जिसमें वह दिखाया गया. |
locale | string | null | वह भाषा जिसमें पाठ दिखाया गया. |
policy_url | string | null | वह बायोमेट्रिक डेटा नीति जिससे चरण ने लिंक किया था. |
step | string | null | व्यक्ति के उत्तर देते समय सत्र जिस वर्कफ़्लो चरण पर था (उदाहरण के लिए LIVENESS). |
node_id | string | null | उत्तर के समय सत्र जिस वर्कफ़्लो ग्राफ़ नोड पर था. |
ip_address | string | null | वह IP पता जहाँ से उत्तर आया. |
ip_country_code | string | null | उत्तर के IP पते का ISO 3166-1 alpha-2 देश. |
ip_state | string | null | उत्तर के IP पते का ISO 3166-2 उपविभाग (उदाहरण के लिए US-IL). |
ip_city | string | null | उत्तर के IP का शहर. |
user_agent | string | null | उत्तर के अनुरोध का उपयोगकर्ता एजेंट. |
detected_ip_address | string | null | व्यक्ति का वह IP पता जिससे आवश्यकता अंतिम बार जाँची गई थी. जब व्यक्ति ने किसी दूसरे डिवाइस पर उत्तर दिया हो, तब यह ip_address से अलग हो सकता है. |
detected_country_code | string | null | पहचाने गए IP का ISO 3166-1 alpha-2 देश. |
detected_state | string | null | पहचाने गए IP का ISO 3166-2 उपविभाग. |
detected_city | string | null | पहचाने गए IP का शहर. |
declared_state | string | null | ISO 3166-2 उपविभाग जो आपने घोषित किया: user_state, या expected_details में US पते का राज्य. |
document_state | string | null | ISO 3166-2 उपविभाग जिसने पहचान दस्तावेज़ जारी किया, जो ID कैप्चर के समय पढ़ा गया. |
jurisdictions | array of string | US राज्य (USPS कोड, उदाहरण के लिए IL) जिनके बायोमेट्रिक कानून के दायरे में व्यक्ति आता है. जब साक्ष्य व्यक्ति को US में रखता है पर राज्य ज्ञात नहीं है, तब US. कोई लागू न हो तो खाली. |
retention_months | integer | null | jurisdictions में से सबसे छोटी बायोमेट्रिक प्रतिधारण सीमा, महीनों में. कोई लागू न हो तो null. |
reason | string (enum) | null | BIOMETRIC_CONSENT_UNSUPPORTED_SDK: सहमति आवश्यक थी और 4.10.0 से कम संस्करण का नेटिव SDK, या ऐसा SDK जिसने अपना संस्करण नहीं बताया, चरण के बिना चेहरा कैप्चर कर चुका था; status pending रहता है, या given हो जाता है यदि व्यक्ति ने बाद में होस्टेड फ़्लो में सहमति दे दी. BIOMETRIC_CONSENT_DECLINED: अस्वीकृति दर्ज की गई (यह SDK कारण की जगह लेता है). अन्यथा null, और जब सत्र को सहमति की आवश्यकता नहीं थी, तब हमेशा null. |
decline_reason | string | null | BIOMETRIC_CONSENT_DECLINED, जब दर्ज की गई अस्वीकृति ने सत्र समाप्त किया. अन्यथा null. |
face_data_deleted_at | string (ISO 8601) | null | अस्वीकृति के कारण सत्र की चेहरे की छवियाँ, वीडियो और बायोमेट्रिक टेम्पलेट कब हटाए गए. केवल तब जब अस्वीकृति दर्ज हुई हो, अन्यथा null. |
{
"required": true,
"trigger": "ip_state",
"status": "pending",
"given_at": null,
"declined_at": null,
"text_version": null,
"text_hash": null,
"locale": null,
"policy_url": null,
"step": null,
"node_id": null,
"ip_address": null,
"ip_country_code": null,
"ip_state": null,
"ip_city": null,
"user_agent": null,
"detected_ip_address": "203.0.113.42",
"detected_country_code": "US",
"detected_state": "US-IL",
"detected_city": "Chicago",
"declared_state": null,
"document_state": null,
"jurisdictions": ["IL"],
"retention_months": 36,
"reason": "BIOMETRIC_CONSENT_UNSUPPORTED_SDK",
"decline_reason": null,
"face_data_deleted_at": null
}
{
"required": true,
"trigger": "declared_state",
"status": "given",
"given_at": "2026-10-13T18:31:07.412000Z",
"declined_at": null,
"text_version": "bio-consent-2026-10-12",
"text_hash": "9b2f0c5e4d8a7f61c3e2b4a5d6f7081923a4b5c6d7e8f90a1b2c3d4e5f6a7b8c",
"locale": "en",
"policy_url": "https://didit.me/legal/biometric-data-policy",
"step": "LIVENESS",
"node_id": "feature_liveness_1",
"ip_address": "198.51.100.23",
"ip_country_code": "ES",
"ip_state": "ES-M",
"ip_city": "Madrid",
"user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1",
"detected_ip_address": "198.51.100.23",
"detected_country_code": "ES",
"detected_state": "ES-M",
"detected_city": "Madrid",
"declared_state": null,
"document_state": null,
"jurisdictions": ["IL"],
"retention_months": 36,
"reason": null,
"decline_reason": null,
"face_data_deleted_at": null
}
स्टेटस एनम संदर्भ
दो संबंधित मान-समूहstatus फ़ील्ड का नाम साझा करते हैं। इस पेज की हर सुविधा-स्तरीय रिपोर्ट ऑब्जेक्ट सुविधा-स्तरीय एनम इस्तेमाल करता है, जबकि पैरेंट सत्र का टॉप-लेवल status व्यापक सत्र एनम इस्तेमाल करता है।
सुविधा-स्तरीय स्टेटस
हर रिपोर्ट ऑब्जेक्ट केstatus फ़ील्ड में इस्तेमाल होता है। स्रोत: common/config/choices.py:343-348 (FeatureStatusChoices)।
| मान | अर्थ |
|---|---|
Not Finished | सुविधा का प्रावधान किया जा चुका है, लेकिन उपयोगकर्ता ने इसे अभी पूरा नहीं किया है। |
Approved | सुविधा ने सभी जाँचें पास कर ली हैं। |
Declined | सुविधा कम से कम एक कठोर जाँच में विफल रही (देखें warnings[] जिसमें log_type: "error" हो)। |
In Review | सुविधा ने सॉफ़्ट-फ़ेल संकेत दिए हैं और वह मैन्युअल समीक्षा का इंतज़ार कर रही है (देखें warnings[] जिसमें log_type: "warning" हो)। |
Resub Requested | समीक्षक ने उपयोगकर्ता से इस सुविधा को फिर से जमा करने का अनुरोध किया है। |
Expired भी दिखाई दे सकता है (PhoneStatusChoices common/config/choices.py:377-382 पर, और EmailStatusChoices common/config/choices.py:434-439 पर)।
सत्र-स्तरीय स्टेटस
पैरेंट सत्र के टॉप-लेवलstatus में इस्तेमाल होता है। स्रोत: common/config/choices.py:106-117 (StatusChoices)।
| मान | अर्थ |
|---|---|
Not Started | सत्र बनाया जा चुका है, लेकिन उपयोगकर्ता ने इसे शुरू नहीं किया है। |
In Progress | उपयोगकर्ता ने फ़्लो शुरू कर दिया है; परिणाम अभी अंतिम नहीं हुआ है। |
Approved | सत्र ने सभी जाँचें पास कर ली हैं। |
Declined | सत्र कम से कम एक कठोर जाँच में विफल रहा। |
In Review | सत्र मैन्युअल समीक्षा का इंतज़ार कर रहा है। |
Expired | सत्र पूरा होने से पहले उसकी समय-सीमा समाप्त हो गई। |
Abandoned | उपयोगकर्ता पूरा किए बिना फ़्लो से बाहर चला गया। |
Kyc Expired | KYC की वैधता अवधि समाप्त हो गई (पुनः सत्यापन फ़्लो में इस्तेमाल होता है)। |
Resubmitted | उपयोगकर्ता ने पिछली अस्वीकृति के बाद फिर से जमा किया; यह सत्र किसी नए सत्र द्वारा प्रतिस्थापित हो गया है। |
Awaiting User | सिस्टम उपयोगकर्ता की ओर से किसी कार्रवाई का इंतज़ार कर रहा है (जैसे OTP दर्ज करना)। |
अंतिम सत्र मान
Approved, Declined, In Review, Expired, Kyc Expired और Abandoned हैं। कोई सत्र तब भी अपने समग्र निर्णय तक पहुँच सकता है जब कोई व्यक्तिगत सुविधा In Review पर बनी रहे।