अवलोकन
हर सुविधा-वार रिपोर्ट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 द्वारा निकाली गई जन्म तिथि। | "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; पुरानी रिलीज़ में provider पंक्ति हो सकती है जिसमें error हो), source_errors[] (वर्तमान स्टेजिंग में अलग स्रोत डायग्नोस्टिक; प्रोडक्शन में रोलआउट की पुष्टि करें), 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, जब वॉलेट एक साझा करे) और 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)। थ्रेशोल्ड और bucket मूल्यांकन के समय सहेजे जाते हैं; ऐतिहासिक मूल्यांकन साक्ष्य उपलब्ध न होने पर तीनों 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 चिप, या Japan My Number Card का JPKI के माध्यम से पढ़ना (chip_protocol: "jpki")। यह GET /v3/session/{sessionId}/decision/ में nfc_verifications[] के रूप में आता है (हर पैरेंट KYC रिकॉर्ड के लिए एक)। स्रोत: kyc/serializers/epassport.py:121-139 (NFCV3Serializer, जो kyc/serializers/epassport.py:83-118 पर NFCV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | नल-योग्य | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | स्टेटस एनम देखें। | "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 (पढ़े गए Data Groups), 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 जाँचता है कि हर Data Group का हैश 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 (जापान का 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। प्रमाणपत्र, उनके सीरियल नंबर या हस्ताक्षर कभी नहीं लौटाए जाते। यह null होता है ICAO चिप के लिए, छोड़े गए चरणों के लिए, और तब जब चरण बिना किसी कार्ड पढ़े बंद हुआ हो। देखें 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 | नहीं | देखें Status enum। | "Approved" |
method | string (enum) | हाँ | ACTIVE_3D, FLASHING या PASSIVE (LivenessMethodChoices, common/config/choices.py:514-517)। PASSIVE तब चलता है जब डेस्कटॉप सत्र अनुमत हों और उपयोगकर्ता डेस्कटॉप पर हो। | "PASSIVE" |
score | float (0-100) | हाँ | लाइवनेस का विश्वास स्कोर, 2 दशमलव तक राउंड किया गया। | 92.41 |
reference_image | string (URL) | हाँ | उपयोगकर्ता के संदर्भ चेहरे के क्रॉप की प्रीसाइन्ड URL। | "https://<media-host>/.../reference.jpg?..." |
video_url | string (URL) | हाँ | लाइवनेस रिकॉर्डिंग की प्रीसाइन्ड URL, जब कैप्चर ने उसे सहेजा हो, सक्रिय और पैसिव दोनों लाइवनेस के लिए। जब सत्र ने कोई रिकॉर्डिंग नहीं रखी हो, तो null। | "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": []
}
null। ऊपर का उदाहरण ऐसे ही सत्र का है जिसने कोई रिकॉर्डिंग नहीं रखी।
चेहरा मिलान
प्रति चेहरा-मिलान तुलना के लिए लौटाया जाता है (आमतौर पर उपयोगकर्ता का लाइवनेस चेहरा दस्तावेज़ के पोर्ट्रेट से)।GET /v3/session/{sessionId}/decision/ में face_matches[] के रूप में दिखता है। स्रोत: face/serializers/face.py:367-389 (FaceMatchV3Serializer, जो face/serializers/face.py:323-364 पर FaceMatchV2Serializer को विस्तारित करता है)।
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
status | string | नहीं | देखें Status 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": []
}
चेहरा खोज
यह स्टैंडअलोन Face Search API (POST /v3/face-search/) से लौटाया जाता है। Face Search कभी भी /v3/session/{sessionId}/decision/ में बहुवचन array के रूप में नहीं आता। जब save_api_request=true के साथ इसे सहेजा जाता है, तो सत्र वहाँ features[] में FACE_SEARCH प्रविष्टि के रूप में और liveness_checks[] में एक आइटम के रूप में दिखता है, जिसमें सहेजे गए matches होते हैं। स्रोत: apis/serializers/face_search.py:8-79 (FaceSearchResponseSerializer, जो FaceSearchDetailsSerializer को समाहित करता है); मिलान dict face/utils/utils.py:869-884 में बनाए जाते हैं।
शीर्ष स्तर का रिस्पॉन्स:
| फ़ील्ड | प्रकार | शून्य हो सकता है | विवरण | उदाहरण |
|---|---|---|---|---|
request_id | string (UUID) | नहीं | save_api_request=true होने पर सहेजा गया सत्र ID (GET /v3/session/{sessionId}/decision/ के साथ उपयोग किया जा सकता है); अन्यथा एक अस्थायी correlation 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) | नहीं | सर्वर-साइड पर अनुरोध का timestamp। | "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 | चेहरा खोज मिलान ऑब्जेक्ट का array | नहीं | समानता की न्यूनतम सीमा से ऊपर के अधिकतम 5 मिलान, समानता के अवरोही क्रम में सॉर्ट किए गए (search_type=blocklisted_or_approved के साथ ब्लॉकलिस्ट वाली प्रविष्टियाँ सबसे पहले)। | […] |
user_image | object | नहीं | सबमिट की गई इमेज का डिटेक्शन परिणाम: { entities: [{ bbox, confidence }], best_angle }, जिसमें हर डिटेक्ट किए गए चेहरे के लिए एक entity होती है। | { "entities": [{ "bbox": [40, 40, 120, 120], "confidence": 0.73 }], "best_angle": 0 } |
warnings | objects का array | नहीं | इस स्टैंडअलोन API के लिए संक्षिप्त चेतावनी संरचना, जिसमें node_id नहीं है। सीरियलाइज़र अनुबंध में { risk, additional_data, log_type, short_description, long_description } घोषित है (apis/serializers/face_search.py:49-54); रनटाइम 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 | हाँ | मेल खाने वाले सत्र की कंसोल-अनुकूल संख्या; गैर-सत्र मिलानों के लिए null। | 1024 |
similarity_percentage | float (0-100) | नहीं | सबमिट किए गए चेहरे और मिले चेहरे के बीच समानता। | 96.42 |
source | string (enum) | नहीं | मिले चेहरे का नामांकन स्रोत: session (सत्यापन सत्र या सहेजी गई स्टैंडअलोन कॉल), imported (सीधे उपयोगकर्ता प्रोफ़ाइल में चेहरा अपलोड), list_entry (सूची से जुड़ा चेहरा), retained_template (स्रोत सत्र हटाए जाने के बाद रखा गया, इमेज-रहित बायोमेट्रिक टेम्पलेट)। | "session" |
vendor_data | string | हाँ | मेल खाने वाले सत्र का vendor_data, या imported और retained_template मिलानों के लिए जुड़े उपयोगकर्ता का। | "user-12345" |
vendor_user_id | string (UUID) | हाँ | जुड़ा उपयोगकर्ता। list_entry मिलानों और उपयोगकर्ता के बिना सत्रों के लिए null। | "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 | हाँ | मेल खाने वाले सत्र की सत्यापन स्थिति (देखें स्थिति enum); गैर-सत्र मिलानों के लिए null। | "Approved" |
is_blocklisted | boolean | नहीं | क्या मिला चेहरा आपकी चेहरा ब्लॉकलिस्ट में है। retained_template मिलानों के लिए हमेशा false; ब्लॉकलिस्ट वाला चेहरा अलग से list_entry मिलान के रूप में दिखाया जाता है। | false |
is_allowlisted | boolean | नहीं | क्या मिला चेहरा आपकी किसी एलाउलिस्ट में है। | 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 | नहीं | देखें स्थिति enum। | "Approved" |
total_hits | integer | नहीं | स्क्रीनिंग हिट्स की संख्या (हमेशा मौजूद, डिफ़ॉल्ट 0)। | 2 |
entity_type | string (enum) | हाँ | person या company (EntityTypeChoices, common/config/choices.py:675-677)। | "person" |
hits | objects का array | नहीं | हर हिट के लिए एक प्रविष्टि। मुख्य फ़ील्ड: id, caption, match (bool), target (bool | null; क्या इकाई सूची का सीधा लक्ष्य है), match_score (float 0-100, पहचान का विश्वास स्कोर), risk_score (float 0-100, इकाई का जोखिम स्कोर), score (अप्रचलित 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) | हाँ | कुल स्क्रीनिंग स्कोर: उन हिट्स में सबसे ऊँचा risk_score जिन्हें False Positive चिह्नित नहीं किया गया है (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 | नहीं | देखें स्थिति enum। | "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 }। दूरियाँ km में, और किसी एक पक्ष के न होने पर 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 | objects की array | नहीं | सत्रों के बीच 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 | नहीं | देखें स्टेटस 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, ऐरे | हाँ | देश और क्षेत्र का परिणाम। | { "enabled": true, "result": "outside" } |
position_source, anonymizers | string, object | हाँ | वह स्रोत जिससे यह चरण स्थिति लेता है, और VPN, प्रॉक्सी, 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 | चेतावनी ऑब्जेक्ट की ऐरे (चेतावनी ऑब्जेक्ट) | नहीं | चरण की 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 | नहीं | देखें स्टेटस 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 | स्ट्रिंग की सरणी (URL) | नहीं | अतिरिक्त अपलोड की गई फ़ाइलों के प्री-साइन्ड URL। | [] |
detected_codes | ऑब्जेक्ट की सरणी | नहीं | दस्तावेज़ के हर प्रोसेस किए गए पेज पर मिले QR कोड और बारकोड: type, page_number (1-आधारित), position (बहुभुज), x/y/width/height (बाउंडिंग बॉक्स), page_width/page_height, raw_payload (base64), parsed_payload (डिकोड किया गया मान; null जब कोड मिला हो पर डिकोड न हो सका हो)। जब डिटेक्शन में कुछ न मिले, तब खाली सरणी। | [{ "type": "QR_CODE", "page_number": 1, "parsed_payload": "https://issuer.example/inv/9981" }] |
node_id | स्ट्रिंग | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_poa" |
warnings | सरणी | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"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 | स्ट्रिंग | नहीं | देखें स्टेटस enum। | "Approved" |
phone_number_prefix | स्ट्रिंग | नहीं | E.164 देश उपसर्ग (+ सहित)। | "+34" |
phone_number | स्ट्रिंग | नहीं | उपसर्ग के बिना सब्सक्राइबर नंबर। | "612345678" |
full_number | स्ट्रिंग | नहीं | पूरा E.164 नंबर (phone_number_prefix + phone_number)। | "+34612345678" |
country_code | स्ट्रिंग (ISO 3166-1 alpha-2) | हाँ | नंबर से संबंधित देश। | "ES" |
country_name | स्ट्रिंग | हाँ | स्थानीयकृत देश का नाम। | "Spain" |
carrier | ऑब्जेक्ट | नहीं | { 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 | बूलियन | नहीं | true जब कैरियर नंबर को अस्थायी या डिस्पोज़ेबल के रूप में चिह्नित करता है। | false |
is_virtual | बूलियन | नहीं | true जब carrier.type, voip, isp, vpn में से कोई एक हो। | false |
verification_method | स्ट्रिंग | नहीं | OTP भेजने के लिए इस्तेमाल किया गया चैनल (whatsapp, sms, …)। यह अंतिम भेजने के प्रयास के actual_channel से पढ़ा जाता है (उसके न होने पर अनुरोधित channel, और फिर sms)। | "whatsapp" |
verification_attempts | पूर्णांक | नहीं | OTP भेजने के कुल प्रयास (पहला भेजना और दोबारा भेजना)। | 1 |
verified_at | स्ट्रिंग (ISO 8601) | हाँ | वह समय-चिह्न जब OTP सफलतापूर्वक दर्ज किया गया। | "2026-05-17T10:14:02Z" |
lifecycle | ऑब्जेक्ट की सरणी | नहीं | कालानुक्रमिक घटनाएँ: भेजने के प्रयास, डिलीवरी कॉलबैक, कोड जाँच, और अंतिम स्टेटस घटना। हर घटना { type, timestamp, details, fee } है। घटना प्रकार PhoneEventChoices से आते हैं। | […] |
matches | ऑब्जेक्ट की सरणी | नहीं | सत्रों के बीच फ़ोन नंबर मिलान। हर आइटम: { session_id, session_number, vendor_data, verification_date, phone_number, status, is_blocklisted, api_service, source }। source session या list_entry होता है। | [] |
node_id | स्ट्रिंग | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_phone" |
warnings | सरणी | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
phone_intelligence | ऑब्जेक्ट | हाँ | फ़ोन इंटेलिजेंस संकेत। केवल तभी मौजूद, जब नंबर के लिए इंटेलिजेंस ऐड-ऑन चला हो। | |
phone_social | ऑब्जेक्ट | हाँ | नंबर का सोशल फ़ुटप्रिंट। केवल तभी मौजूद, जब सोशल फ़ुटप्रिंट ऐड-ऑन चला हो। |
{
"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 | स्ट्रिंग | नहीं | देखें स्टेटस enum। | "Approved" |
email | स्ट्रिंग | नहीं | सबमिट किया गया ईमेल पता। | "maria.garcia@example.com" |
is_breached | बूलियन | नहीं | true जब ईमेल किसी ज्ञात डेटा उल्लंघन में दिखता है। | false |
breaches | ऑब्जेक्ट की सरणी | नहीं | is_breached true होने पर हर उल्लंघन का विवरण: { name, domain, logo_path, breach_date, description, is_verified, data_classes, breach_emails_count }। | [] |
is_disposable | बूलियन | नहीं | true जब ईमेल किसी डिस्पोज़ेबल-मेल प्रदाता का हो। | false |
is_undeliverable | बूलियन | नहीं | true जब SMTP डिलीवरी जाँच दिखाती है कि इनबॉक्स मेल स्वीकार नहीं करता। | false |
verification_attempts | पूर्णांक | नहीं | OTP जाँच के कुल प्रयास। | 1 |
verified_at | स्ट्रिंग (ISO 8601) | हाँ | वह समय-चिह्न जब OTP सफलतापूर्वक दर्ज किया गया। | "2026-05-17T10:15:22Z" |
lifecycle | ऑब्जेक्ट की सरणी | नहीं | कालानुक्रमिक घटनाएँ: भेजने के प्रयास, कोड जाँच, और अंतिम स्टेटस घटना। हर घटना { type, timestamp, details, fee } है। घटना प्रकार EmailEventChoices से आते हैं। | […] |
matches | ऑब्जेक्ट की सरणी | नहीं | सत्रों के बीच ईमेल मिलान। हर आइटम: { session_id, session_number, vendor_data, verification_date, email, status, is_blocklisted, api_service, source }। source session या list_entry होता है। | [] |
node_id | स्ट्रिंग | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_email" |
warnings | सरणी | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
email_intelligence | ऑब्जेक्ट | हाँ | ईमेल इंटेलिजेंस संकेत। केवल तभी मौजूद, जब पते के लिए इंटेलिजेंस ऐड-ऑन चला हो। | |
email_social | ऑब्जेक्ट | हाँ | पते का सोशल फ़ुटप्रिंट। केवल तभी मौजूद, जब सोशल फ़ुटप्रिंट ऐड-ऑन चला हो। |
{
"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 | string (ISO 3166-1 alpha-3) | हाँ | वह देश जिसकी रजिस्ट्री से पूछताछ की गई। | "ESP" |
validation_type | string (एनम) | नहीं | परिणाम की पुष्टि किस तरह हुई: 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 | object | नहीं | रजिस्ट्री को भेजा गया डेटा। फ़ाइल फ़ील्ड (selfie, cnh_qr_code_image, document_image) पढ़ने के समय प्रीसाइन्ड किए जाते हैं। | { "document_number": "99999999R", "date_of_birth": "1990-05-12" } |
validations | array of objects | नहीं | कैटलॉग की हर उस सेवा के लिए एक प्रविष्टि जिसने मिलान दिया। हर प्रविष्टि में service_id, service_name, validation (प्रदाता का निर्णय ऑब्जेक्ट), outcome_code, outcome_detail, और source_data (साफ़ किया गया नागरिक प्रोफ़ाइल: full_name, gender, date_of_birth, photo (प्रीसाइन्ड URL), signature (प्रीसाइन्ड URL), …) शामिल हो सकते हैं। | […] |
errors | array of objects | हाँ | जब कोई लुकअप विफल हुआ, तब सेवा-वार त्रुटियाँ; खाली होने पर कुंजी पूरी तरह हटा दी जाती है। हर प्रविष्टि अपस्ट्रीम सेवा का त्रुटि ऑब्जेक्ट है, साथ में वह service_id जिसने उसे उत्पन्न किया। | [] |
match_type | string (एनम) | हाँ | क्वेरी की गई सेवाओं पर कुल मिलान निर्णय: full_match, partial_match, या no_match (DatabaseValidationMatchTypeChoices, common/config/choices.py:1103-1106)। मूल्यांकन होने तक null। | "full_match" |
status | string | नहीं | देखें स्टेटस एनम। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_db_validation" |
warnings | array | नहीं | देखें चेतावनी ऑब्जेक्ट। | [] |
{
"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 | string (UUID) | नहीं | उस प्रश्नावली संस्करण का पहचानकर्ता जिसका उत्तर दिया गया। | "6a0f1c2c-…" |
title | string | नहीं | प्रश्नावली का नाम, जैसा कंसोल में सेट किया गया। | "Customer risk profile" |
description | string | हाँ | प्रश्नावली का विवरण। | "Short risk-profile questions." |
languages | array of strings | नहीं | भाषा कोड जिनमें प्रश्नावली प्रकाशित है। | ["en", "es"] |
default_language | string | नहीं | फ़ॉलबैक भाषा कोड। | "en" |
is_active | boolean | नहीं | क्या यह प्रश्नावली संस्करण सक्रिय है। | true |
is_simple_questionnaire | boolean | नहीं | true तब जब प्रश्नावली में कोई ब्रांचिंग न हो (सपाट सूची)। | true |
questionnaire_group_id | string (UUID) | नहीं | एक ही प्रश्नावली के सभी संस्करणों में साझा पहचानकर्ता। | "a7c2c2c2-…" |
version | integer | नहीं | सक्रिय टेम्पलेट का संस्करण संख्या। | 3 |
status | string | नहीं | इनमें से एक: Approved, In Review, Not Finished (प्रश्नावली-स्तर की अस्वीकृति In Review में मैप होती है)। | "Approved" |
published_at | string (ISO 8601) | हाँ | टेम्पलेट कब प्रकाशित हुआ। | "2026-01-12T11:00:00Z" |
sections | array of objects | नहीं | ग्राफ़ ट्रैवर्सल और दृश्यता फ़िल्टरिंग लागू करने के बाद क्रमबद्ध सेक्शन। हर सेक्शन { 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 | string | 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 | string (UUID) | नहीं | साइनर का हस्ताक्षर। इसे प्रमाण और सत्यापन रूट के लिए signature_id के रूप में उपयोग करें। | "0e6c2a8e-…" |
node_id | string | नहीं | वर्कफ़्लो नोड पहचानकर्ता। | "feature_signature" |
status | string | नहीं | हस्ताक्षर चरण: intro, review, code, signing, signed या declined। केवल signed का अर्थ है कि दस्तावेज़ों पर हस्ताक्षर हो चुके हैं। | "signed" |
verdict | string | नहीं | Not Finished, Approved, In Review या Declined। | "Approved" |
level | string | नहीं | simple (डिफ़ॉल्ट), aes या qes (Qualified, एक ऐड-ऑन)। | "aes" |
format | string | नहीं | सरल हस्ताक्षर के लिए pdf, Advanced (AES) और Qualified (QES) के लिए pades। | "pades" |
profile | string | हाँ | Advanced (AES) या Qualified (QES) हस्ताक्षर किए जाने के बाद PAdES-B-LT, अन्यथा null। | "PAdES-B-LT" |
signer | object | नहीं | { name, capacity, company, role, roles, identity_session_id }। capacity self (KYC) या company (KYB) है। | { "name": "Jane Doe", "capacity": "self", … } |
identity_used | object | नहीं | { session_id, kyc_id, verified, expected_name }: वह सत्यापित पहचान जिस पर हस्ताक्षर निर्भर करता है। बिना सत्यापित पहचान वाले सरल हस्ताक्षर के लिए खाली। | { "verified": true, … } |
certificate | object | हाँ | { 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 होता है, क्योंकि टाइमस्टैम्प Didit जारी करता है; QES के लिए इसे क्वालिफाइड ट्रस्ट सर्विस प्रोवाइडर जारी करता है। हस्ताक्षर होने तक null होता है, और सरल हस्ताक्षर के लिए हमेशा null होता है। | { "qualified": false, … } |
documents | ऑब्जेक्ट की सूची | नहीं | { id, uuid, title, language, source_revision, translation_id, 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[].language | स्ट्रिंग | हाँ | प्रयास शुरू होने पर चुने गए संस्करण की भाषा, या सेट न होने पर null। पूरा और मेल खाने वाला अनुवाद इस्तेमाल होता है, अन्यथा मूल दस्तावेज़। हस्ताक्षर होने के बाद यही वह भाषा है जिसमें वास्तव में हस्ताक्षर हुए। | "en" |
documents[].source_revision | स्ट्रिंग (UUID) | नहीं | प्रयास में कॉपी किया गया स्रोत संशोधन, जिसमें अनुवाद चुने जाने पर भी यही रहता है। यह हस्ताक्षरकर्ता के दस्तावेज़ id से अलग है। | "22222222-2222-4222-8222-222222222222" |
documents[].translation_id | स्ट्रिंग (UUID) | हाँ | चुना गया अनुवाद, या मूल के लिए null। दस्तावेज़ की कॉपी और उसका भाषा चयन प्रयास शुरू होने के बाद स्थिर रहते हैं। | 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) | नहीं | सहेजा गया सत्र ID, जब save_api_request=true हो (डिफ़ॉल्ट); अन्यथा एक अस्थायी संबंध 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 | नहीं | शीर्ष-स्तरीय सत्र स्थिति (देखें स्टेटस एनम)। | "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 | नहीं | देखें स्टेटस एनम। | "Approved" |
node_id | string | null | हाँ | वर्कफ़्लो नोड पहचानकर्ता (V3)। | "first_registry" |
data_resolved | boolean | नहीं | true जब रजिस्ट्री से डेटा प्राप्ति पूरी हो चुकी हो (या is_from_registry false हो, यानी डेटा मैन्युअल रूप से दर्ज किया गया हो)। | true |
company | object | नहीं | पूरा कंपनी पेलोड, देखें नीचे कंपनी ऑब्जेक्ट। | { … } |
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 | हाँ | आंतरिक सत्यापन स्थिति एनम। |
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 | array of 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 | array of strings | नहीं | वर्कफ़्लो कॉन्फ़िगरेशन द्वारा आवश्यक दस्तावेज़ समूह। | ["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 }। null जब किसी सक्रिय UBO से KYC नहीं जुड़ा हो। | { "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 पर बनी रहे।