> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# डेटाबेस सत्यापन API: राष्ट्रीय ID मिलान

> Didit का POST /v3/database-validation/ 100+ राष्ट्रीय और वैश्विक स्रोतों पर पहचान डेटा सत्यापित करता है, 1x1 और 2x2 वॉटरफ़ॉल मिलान के साथ। प्रति कॉल भुगतान।

## पता-आधारित सेवाएँ

जो सेवाएँ निवास या उपयोगिता पते का सत्यापन करती हैं, उनके लिए आप एकल `address` भेज सकते हैं, और Didit जाँच से पहले उसे अलग-अलग हिस्सों में बाँट देगा। सबसे अच्छी मिलान दर के लिए, Didit के संरचित पता फ़ील्ड सीधे भेजें:

| फ़ील्ड | अर्थ |
| - | - |
| `address_element_1` | सड़क का पता, जिसमें नंबर और सड़क का प्रकार शामिल हो |
| `address_element_2` | वैकल्पिक इकाई, भवन, मंज़िल या अतिरिक्त पता पंक्ति |
| `address_element_3` | उप-नगर, ज़िला, इलाका या मोहल्ला |
| `address_element_4` | शहर, कस्बा, राज्य, प्रांत या क्षेत्र |
| `address_element_5` | पिन कोड या पोस्टल कोड |

संरचित फ़ील्ड एकल `address` मान को ओवरराइड कर देते हैं। `postal_code` को `address_element_5` के उपनाम के रूप में स्वीकार किया जाता है।

## सहमति

कुछ डेटाबेस सेवाओं के लिए प्रदाता से पूछताछ करने से पहले अंतिम उपयोगकर्ता की स्पष्ट सहमति आवश्यक होती है। सेवा कैटलॉग में ऐसी पंक्तियों को `requires_consent=true` से चिह्नित किया जाता है।

जब चुनी गई सेवाओं पर उपयोगकर्ता की सहमति लागू होती है, तब `consent=true` भेजें।

यदि चुनी गई कोई सेवा सहमति माँगती है और आपने उसे नहीं भेजा, तो Didit किसी भी प्रदाता कॉल या बिलिंग इवेंट से पहले अनुरोध को अस्वीकार कर देता है।

## फ़ाइल अपलोड

डेटाबेस सत्यापन `multipart/form-data` का उपयोग करता है। जिन बायोमेट्रिक सेवाओं को `selfie` चाहिए, वे API प्लेग्राउंड में उसे फ़ाइल अपलोड फ़ील्ड के रूप में दिखाती हैं, ताकि आप पथ या base64 स्ट्रिंग चिपकाने के बजाय सीधे कोई छवि चुन सकें।

कोड में, सामान्य multipart सिंटैक्स से फ़ाइल अपलोड करें:

```bash theme={null}
-F "selfie=@./selfie.jpg"
```

## सत्यापन त्रुटियाँ

Didit प्रदाता को कॉल करने से पहले आवश्यक फ़ील्ड, पते की संरचना और सेवा-विशिष्ट प्रारूपों की जाँच करता है। उदाहरण के लिए, `chn_national_id` और `chn_passport_verification` जैसी चीन रजिस्ट्री सेवाओं को `full_name` मूल चीनी लिपि में चाहिए, और `chn_national_id` के लिए सही चेकसम वाला वैध 15 या 18 वर्णों वाला चीनी राष्ट्रीय पहचान नंबर भी ज़रूरी है।

यदि कोई अनुरोध नहीं चल सकता, तो API स्पष्ट फ़ील्ड त्रुटियाँ लौटाता है और कोई उपयोग बिल नहीं किया जाता। यदि प्रीफ़्लाइट जाँच के बाद प्रदाता विफल होता है, तो रिस्पॉन्स में `validation_errors` शामिल होता है, और सहेजे गए API अनुरोध इन त्रुटियों को डेटाबेस सत्यापन परिणाम में संग्रहीत करते हैं।

## अस्वीकृत इनपुट और अनुपलब्ध परिणाम

जब कोई सेवा उपयोग योग्य परिणाम नहीं लौटाती, तो पुनः प्रयास करने से पहले हर `validation_errors` प्रविष्टि की जाँच करें।
अकेला HTTP स्टेटस यह तय नहीं करता कि पुनः प्रयास उचित है या नहीं।
`code: "provider_rejected_input"` और `retryable: false` वाला `400` रिस्पॉन्स बताता है कि हर ऐसे प्रयास ने, जिसका उत्तर नहीं मिला, इनपुट को स्पष्ट रूप से अस्वीकार किया।
फिर से प्रयास करने से पहले दिया गया डेटा सुधारें।
इन प्रयासों का बिल नहीं बनता।

`code: "empty_provider_response"` और `retryable: true` वाला `502` रिस्पॉन्स बताता है कि सेवा किसी दूसरे कारण से उपयोग योग्य परिणाम नहीं दे सकी।
इसमें वह स्थिति भी शामिल है जहाँ अस्वीकृत इनपुट के बाद एक अनुपलब्ध फ़ॉलबैक आया, या ऐसा फ़ॉलबैक आया जिसने कोई कारण नहीं बताया।
बाद में फिर से प्रयास करें; यह रिस्पॉन्स यह साबित नहीं करता कि इनपुट गलत है।
यदि कोई डेटाबेस लगातार विफल होता रहता है, तो रुकावट लगातार बने रहने पर Didit उन संगठनों को ईमेल भेजता है जिन्होंने हाल में उसका उपयोग किया था, और जब वास्तविक जाँचों से पुष्टि हो कि वह फिर से उत्तर दे रहा है, तब दोबारा ईमेल भेजता है। देखें [उपलब्धता सूचनाएँ](https://docs.didit.me/hi/core-technology/database-validation/overview.md#उपलब्धता-सूचनाएं)।

जब चुनी गई कुछ ही सेवाएँ विफल होती हैं, तो अनुरोध सफल रहता है: रिस्पॉन्स `200` होता है और विफल सेवाएँ `database_validation.errors[]` में सूचीबद्ध होती हैं, हर एक में वही `code` और `retryable` फ़ील्ड होते हैं।
तब `database_validation.status` उन सेवाओं के अनुसार तय होता है जिन्होंने उत्तर दिया, और वह `Approved` हो सकता है, इसलिए हर रिस्पॉन्स में `errors[]` की जाँच करें, केवल `4xx` या `5xx` पर ही नहीं।
वहाँ सूचीबद्ध सेवा `validations` और `services_used` में नहीं होती, और उसका बिल नहीं बनता; उस सेवा को अकेले पुनः प्रयास करें।

अन्य `502` त्रुटियों के लिए इनपुट सुधारना पड़ सकता है।
उदाहरण के लिए, `provider_invalid_input` और `provider_validation_error` ऐसे इनपुट का वर्णन करते हैं जिसे स्रोत ने अस्वीकार किया, और उन्हें बिना बदलाव के पुनः प्रयास नहीं करना चाहिए, भले ही पुराने रिस्पॉन्स में `retryable` न हो।
इन कोडों पर `empty_provider_response` के लिए दिया गया पुनः प्रयास मार्गदर्शन लागू नहीं होता।
निर्णायक "कोई मिलान नहीं" परिणाम एक पूर्ण जाँच है, उपलब्धता की विफलता नहीं।


## OpenAPI

````yaml hi/openapi-25.json POST /v3/database-validation/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/database-validation/:
    post:
      tags:
        - Standalone APIs
      summary: डेटाबेस सत्यापन (स्टैंडअलोन)
      description: >-
        आधिकारिक सरकारी और रजिस्ट्री स्रोतों के विरुद्ध किसी व्यक्ति के पहचान
        डेटा को सत्यापित करें — ब्राज़ील में CPF, अर्जेंटीना में RENAPER, स्पेन
        और पेरू में DNI रजिस्ट्रियाँ, मेक्सिको में INE, और 60+ देशों में 100+ से
        अधिक सेवाएँ।


        **सेवा चयन।** प्रत्येक देश एक या अधिक कैटलॉग सेवाएँ प्रदर्शित करता है
        जिनकी पहचान एक `service_id` (उदा. `bra_cpf`, `arg_renaper`,
        `pan_cedula_sib`) द्वारा की जाती है। `services` ऐरे के साथ उन सेवाओं को
        पिन करें जिन्हें आप चाहते हैं — यदि आप इसे छोड़ देते हैं, तो ठीक **एक**
        डिफ़ॉल्ट सेवा चलती है (देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा)।
        `services` भेजने से रिस्पॉन्स भी `services_used` और `match_score` वाले
        विस्तारित प्रारूप में स्विच हो जाता है। `GET
        /v1/organization/database-validation-countries/` (इस विनिर्देश में
        प्रलेखित नहीं किया गया एक कैटलॉग endpoint) या Business Console वर्कफ़्लो
        संपादक के माध्यम से सेवाओं, उनके आवश्यक फ़ील्ड और कीमतों का पता लगाएं।
        कैटलॉग में कुछ सेवाओं को `requires_consent=true` के रूप में फ़्लैग किया
        गया है और उनके लिए `consent=true` आवश्यक है; दूसरों को कॉल किए जाने से
        पहले आपके संगठन के लिए ऑनबोर्डिंग की आवश्यकता होती है।


        **इनपुट फ़ील्ड।** `identification_number` एक सार्वभौमिक फ़ील्ड है जो
        स्वचालित रूप से सही देश-विशिष्ट फ़ील्ड में मैप हो जाता है (इसका विवरण
        देखें)। किसी भी प्रदाता को कॉल करने से पहले देश प्रारूप नियमों को लागू
        किया जाता है (उदा. BRA CPF में ठीक 11 अंक होने चाहिए) और प्रारूप
        विफलताओं के लिए कभी बिल नहीं किया जाता है। बायोमेट्रिक सेवाओं के लिए
        `selfie` अपलोड (केवल multipart) की आवश्यकता होती है; अर्जेंटीना RENAPER
        को अतिरिक्त रूप से `gender` की आवश्यकता होती है।


        **परिणाम।** प्रत्येक सेवा फ़ील्ड-दर-फ़ील्ड `validation` मैप के साथ-साथ
        एक वेंडर-न्यूट्रल `outcome_code` (`MATCH`, `PARTIAL_MATCH`, `NO_MATCH`,
        `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`,
        `MINOR_BLOCKED`, `DECEASED`, `BIOMETRIC_NO_MATCH`,
        `BIOMETRIC_IMAGE_UNUSABLE`, `INCONCLUSIVE`, `DOCUMENT_SUPERSEDED`,
        `REGISTRY_UNAVAILABLE`, `REGISTRY_ERROR`) लौटाती है। अंतरों पर ध्यान
        दें: `NO_MATCH` एक निश्चित बेमेल है, `INCONCLUSIVE` का अर्थ है कि
        रजिस्ट्री किसी भी तरह से पुष्टि नहीं कर सकी (समीक्षा करें, अस्वीकार न
        करें), और `BIOMETRIC_IMAGE_UNUSABLE` एक तकनीकी सेल्फ़ी समस्या है (फिर से
        लें), निश्चित `BIOMETRIC_NO_MATCH` के विपरीत। समग्र `match_type` सेवाओं
        में एग्रीगेट होता है (कोई भी पूर्ण → `full_match`, अन्यथा कोई भी आंशिक →
        `partial_match`, अन्यथा `no_match`) और
        `no_match_action`/`partial_match_action` इसे अंतिम `status` में अनुवादित
        करते हैं। `validation_type` व्युत्पन्न है: `two_by_two` जब दो या अधिक
        विशिष्ट सेवाओं ने पूर्ण मिलान दिया हो (पहचान संख्या पर, पूरा नाम + जन्म
        तिथि पर एक साथ, या बिना किसी विरोधाभास के पते पर), अन्यथा `one_by_one`।


        **स्थायित्व।** `save_api_request` डिफ़ॉल्ट रूप से **true** होता है:
        परिणाम एक सत्र के रूप में संग्रहीत किया जाता है (`request_id`, `GET
        /v3/session/{sessionId}/decision/` के साथ काम करता है), कंसोल में दिखाई
        देता है, और एक `status.updated` webhook ट्रिगर करता है। यह `validations`
        प्रारूप को भी नियंत्रित करता है — सहेजे जाने पर प्रति-सेवा ऑब्जेक्ट, और
        न होने पर एक मर्ज किया गया `{field: match}` मैप।


        **बिलिंग।** प्रति-सेवा: प्रत्येक सेवा जो बिल योग्य परिणाम लौटाती है,
        उससे उसकी अपनी कैटलॉग कीमत ली जाती है। विफल या छोड़ी गई सेवाओं के लिए
        बिल नहीं लिया जाता है, और `400` के साथ अस्वीकृत अनुरोधों का कोई शुल्क
        नहीं लगता है। प्री-फ़्लाइट बैलेंस जांच चयनित सेवाओं की कीमतों के योग को
        कवर करती है (कमी होने पर `403`)।


        **विफलताएं।** जब कोई भी चयनित सेवा उपयोग योग्य परिणाम नहीं लौटाती है, तो
        API `validation_errors` के साथ `400` लौटाता है यदि प्रत्येक अनुत्तरित
        प्रयास ने स्पष्ट रूप से इनपुट को अस्वीकार कर दिया हो
        (`provider_rejected_input`, `retryable: false`)। पुनः प्रयास करने से
        पहले इनपुट को सही करें। अन्यथा यह `validation_errors`
        (`empty_provider_response`, `retryable: true`) के साथ `502` लौटाता है,
        जिसमें मिश्रित इनपुट अस्वीकृति और अनुपलब्ध फ़ॉलबैक प्रयास शामिल हैं; कुछ
        भी बिल नहीं किया जाता है (जब `save_api_request=true` हो तो `Not
        Finished` स्थिति के साथ एक सत्र अभी भी रिकॉर्ड किया जाता है)। जब केवल
        कुछ सेवाएँ विफल होती हैं, तो `200` रिस्पॉन्स
        `database_validation.errors` में उनकी विफलताएँ रखता है।


        **सैंडबॉक्स।** सैंडबॉक्स एप्लिकेशन की कुंजियाँ रजिस्ट्री कॉल और बिलिंग
        को छोड़ देती हैं और एक स्थिर `full_match` रिस्पॉन्स लौटाती हैं —
        सैंडबॉक्स payload में हमेशा `services_used` और `match_score: 100` शामिल
        होता है, चाहे `services` कैसे भी भेजा गया हो, इसलिए सैंडबॉक्स रिस्पॉन्स
        के विरुद्ध लाइव विस्तारित-प्रारूप की शर्तों या 0.0–1.0 `match_score` अंश
        को मान्य न करें।


        अनुरोध को `application/json` के रूप में भेजें, या `selfie` अपलोड करते
        समय `multipart/form-data` के रूप में।
      operationId: post_v3database-validation
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    सत्यापन के लिए रजिस्ट्री का ISO 3166-1 **alpha-3** देश कोड
                    (उदाहरण के लिए `BRA`, `ESP`, `COL`)। यह निर्धारित करता है कि
                    कौन सी सेवाएँ उपलब्ध हैं। असमर्थित कोड मान्य विकल्पों की
                    पूरी सूची के साथ `400` लौटाते हैं।
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    इस देश के लिए चलाए जाने वाले कैटलॉग `service_id` (उदा.
                    `["bra_cpf"]`)। यह एकल स्ट्रिंग या
                    कॉमा-सेपरेटेड/JSON-एन्कोडेड स्ट्रिंग भी स्वीकार करता है।
                    **यदि छोड़ दिया जाए या खाली हो, तो ठीक एक डिफ़ॉल्ट सेवा चलती
                    है** — देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा; अधिक
                    नई, बायोमेट्रिक, और पे-ऐज़-यू-गो सेवाओं को स्पष्ट रूप से
                    नामित किया जाना चाहिए। `services` भेजने से रिस्पॉन्स
                    विस्तारित आकार में बदल जाता है (`services_used` और
                    `match_score` जुड़ जाते हैं)। प्रत्येक id का अस्तित्व होना
                    चाहिए और `issuing_state` के लिए लाइव होना चाहिए; जिन सेवाओं
                    के लिए ऑनबोर्डिंग की आवश्यकता होती है, वे आपके संगठन के लिए
                    सक्रिय होने तक `400` लौटाती हैं। `GET
                    /v1/organization/database-validation-countries/` (एक कैटलॉग
                    endpoint जो इस विनिर्देश में प्रलेखित नहीं है) या Business
                    Console वर्कफ़्लो संपादक के माध्यम से प्रति देश उपलब्ध
                    सेवाओं की खोज करें।
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    अप्रचलित। पश्चगामी अनुकूलता के लिए स्वीकृत लेकिन अनदेखा —
                    रिस्पॉन्स `validation_type` अब इस बात से लिया जाता है कि
                    कितनी सेवाएँ पूरी तरह से मेल खाती हैं। विशिष्ट सेवाओं को पिन
                    करने के लिए `services` का उपयोग करें।
                consent:
                  type: boolean
                  default: false
                  description: >-
                    जब अंतिम उपयोगकर्ता ने चयनित सत्यापन सेवाओं के लिए स्पष्ट
                    रूप से सहमति दी हो, तो `true` पर सेट करें। कैटलॉग में
                    `requires_consent=true` के रूप में फ़्लैग की गई सेवाओं के
                    लिए यह आवश्यक है — इसके बिना वे सेवाएँ
                    `services_requiring_consent` के साथ `400` लौटाती हैं।
                identification_number:
                  type: string
                  description: >-
                    सार्वभौमिक पहचान संख्या — स्वचालित रूप से सही देश-विशिष्ट
                    फ़ील्ड में मैप की जाती है, ताकि आप इसे
                    `personal_number`/`tax_number`/`document_number` के स्थान पर
                    उपयोग कर सकें: ARG→document_number (DNI),
                    BOL→document_number (CI), BRA→tax_number (CPF, 11 अंक),
                    CHL→personal_number (RUT), COL→personal_number (Cédula),
                    CRI→personal_number (Cédula), DOM→personal_number (Cédula,
                    11 अंक), ECU→personal_number (Cédula, 10 अंक),
                    ESP→personal_number (DNI/NIE), GTM→document_number (DPI),
                    HND→document_number (DNI), MEX→personal_number (CURP, 18
                    वर्ण), PAN→personal_number (Cédula), PER→personal_number
                    (DNI, 8 अंक), PRY→document_number (CI), SLV→document_number
                    (DUI), URY→personal_number (CI), VEN→document_number
                    (Cédula)। यह स्पष्ट रूप से प्रदान किए गए देश-विशिष्ट फ़ील्ड
                    को कभी भी ओवरराइड नहीं करता है।
                first_name:
                  type: string
                  description: व्यक्ति का पहला नाम। कुछ सेवाओं/देशों के लिए आवश्यक।
                  example: John
                last_name:
                  type: string
                  description: व्यक्ति का अंतिम नाम। कुछ सेवाओं/देशों द्वारा आवश्यक।
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    मध्य नाम, कुछ देश सेवाओं (AUS, NZL, …) द्वारा उपयोग किया
                    जाता है।
                full_name:
                  type: string
                  description: >-
                    पूरा नाम — कुछ सेवाएँ इसे प्रथम/अंतिम नाम के बदले स्वीकार
                    करती हैं (उदाहरण के लिए CHN सेवाएँ, जो मूल-लिपि नाम का मिलान
                    करती हैं)।
                date_of_birth:
                  type: string
                  format: date
                  description: जन्म तिथि, `YYYY-MM-DD`। कई सेवाओं द्वारा आवश्यक।
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    सरकार द्वारा जारी विशिष्ट व्यक्तिगत पहचानकर्ता। इनके द्वारा
                    उपयोग किया जाता है: CHL (RUT), COL (Cédula), CRI, DOM, ECU,
                    ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY।
                    इसके बजाय `identification_number` पर विचार करें।
                tax_number:
                  type: string
                  description: >-
                    कर पहचान संख्या। इनमें प्रयुक्त: BRA (CPF, 11 अंक)। इसके
                    बजाय `identification_number` का उपयोग करने पर विचार करें।
                document_number:
                  type: string
                  description: >-
                    दस्तावेज़ संख्या। इनके द्वारा उपयोग किया जाता है: ARG (DNI),
                    BOL (CI), GTM (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN
                    (Cédula)। इसके बजाय `identification_number` पर विचार करें।
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    सत्यापित किए जा रहे दस्तावेज़ का प्रकार: `P` पासपोर्ट, `DL`
                    ड्राइविंग लाइसेंस, `ID` राष्ट्रीय पहचान पत्र, `RP` निवास
                    परमिट (साथ ही `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`,
                    `OTHER`)। कुछ सेवाओं (जैसे ESP) द्वारा आवश्यक।
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    दस्तावेज़ की समाप्ति तिथि, `YYYY-MM-DD`। ESP (स्पेन) सत्यापन
                    के लिए आवश्यक।
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    दस्तावेज़ जारी करने की तिथि, `YYYY-MM-DD` (fecha de
                    expedición)। COL (कोलंबिया) cédula सत्यापन के लिए आवश्यक।
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    ISO 3166-1 alpha-3 के रूप में राष्ट्रीयता। कुछ सेवाओं द्वारा
                    आवश्यक।
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    लिंग: `M`, `F`, या `X` (अन्य/अज्ञात)। अर्जेंटीना के RENAPER
                    सत्यापन (`arg_renaper`) के लिए आवश्यक।
                address:
                  description: >-
                    आवासीय पता। संरचित ऑब्जेक्ट `{"street_1":"123 Main
                    St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`
                    को प्राथमिकता दें; पूरी सिंगल-लाइन स्ट्रिंग अभी भी स्वीकार
                    की जाती है। पता-सत्यापन सेवाओं द्वारा आवश्यक; जब कोई सेवा
                    पते की आवश्यकताएं निर्धारित करती है, तो छूटे हुए हिस्से
                    `address_fields_required_by` के साथ `400` लौटाते हैं।
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: पूर्ण एकल-पंक्ति पता (लीगेसी)।
                address_element_1:
                  type: string
                  description: >-
                    सड़क संख्या और प्रकार सहित सड़क का पता। यदि छोड़ दिया जाए,
                    तो यह `address` से प्राप्त किया जाता है।
                address_element_2:
                  type: string
                  description: >-
                    अपार्टमेंट, यूनिट, भवन, फ़्लोर, या अतिरिक्त पता पंक्ति। केवल
                    तभी भेजें जब आपके पास यह स्पष्ट रूप से उपलब्ध हो।
                address_element_3:
                  type: string
                  description: >-
                    शहर, उपनगर, ज़िला, इलाका या पड़ोस। यदि छोड़ा गया है, तो
                    `address` से प्राप्त किया जाता है।
                address_element_4:
                  type: string
                  description: >-
                    राज्य, प्रांत, क्षेत्र या कस्बा। यदि छोड़ दिया जाए, तो
                    `address` से प्राप्त किया जाता है।
                address_element_5:
                  type: string
                  description: >-
                    पोस्टकोड या डाक कोड। `postal_code` को एक उपनाम के रूप में
                    स्वीकार किया जाता है।
                postal_code:
                  type: string
                  description: >-
                    पता-आधारित सेवाओं के लिए डाक कोड (`address_element_5` का
                    उपनाम)।
                driver_license_number:
                  type: string
                  description: >-
                    सरकारी दस्तावेज़-सत्यापन सेवाओं (AUS, NZL, IND) के लिए
                    ड्राइविंग लाइसेंस संख्या।
                driver_license_card_number:
                  type: string
                  description: >-
                    भौतिक ड्राइविंग लाइसेंस कार्ड नंबर, जहाँ लाइसेंस नंबर (AUS)
                    से अलग आवश्यक हो।
                driver_license_state:
                  type: string
                  description: ड्राइविंग लाइसेंस जारी करने वाला राज्य या क्षेत्र (AUS)।
                driver_license_version:
                  type: string
                  description: ड्राइविंग लाइसेंस वर्ज़न कोड (NZL)।
                passport_number:
                  type: string
                  description: >-
                    सरकारी पासपोर्ट-सत्यापन सेवाओं (AUS, NZL, IND, CHN) के लिए
                    पासपोर्ट संख्या।
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    पासपोर्ट समाप्ति तिथि, `YYYY-MM-DD`, पासपोर्ट-सत्यापन सेवाओं
                    के लिए।
                passport_file_number:
                  type: string
                  description: पासपोर्ट फ़ाइल संख्या (IND)।
                passport_issue_country:
                  type: string
                  description: >-
                    पासपोर्ट-सत्यापन सेवाओं के लिए पासपोर्ट का जारीकर्ता देश
                    (ISO 3166-1 alpha-3)।
                medicare_card_number:
                  type: string
                  description: मेडिकेयर कार्ड नंबर (AUS)।
                immi_card_number:
                  type: string
                  description: ऑस्ट्रेलियाई ImmiCard संख्या।
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: ऑस्ट्रेलियाई ImmiCard की समाप्ति तिथि।
                citizenship_certificate_number:
                  type: string
                  description: नागरिकता प्रमाणपत्र संख्या (AUS)।
                birth_registration_number:
                  type: string
                  description: जन्म प्रमाण पत्र पंजीकरण संख्या (AUS)।
                birth_registration_date:
                  type: string
                  format: date
                  description: जन्म प्रमाण पत्र पंजीकरण तिथि (AUS)।
                birth_registration_state:
                  type: string
                  description: जन्म प्रमाण पत्र पंजीकरण राज्य (AUS)।
                marriage_certificate_number:
                  type: string
                  description: विवाह प्रमाण पत्र संख्या (AUS)।
                change_of_name_certificate_number:
                  type: string
                  description: नाम परिवर्तन प्रमाणपत्र संख्या (AUS)।
                first_partner_name:
                  type: string
                  description: विवाह प्रमाण पत्र (AUS) पर साथी का पहला नाम।
                last_partner_name:
                  type: string
                  description: विवाह प्रमाण पत्र (AUS) पर साथी का अंतिम नाम।
                voter_id:
                  type: string
                  description: मतदाता पंजीकरण संख्या (IND EPIC, IRL)।
                epic_card:
                  type: string
                  description: भारत EPIC वोटर कार्ड नंबर।
                pan:
                  type: string
                  description: भारत PAN (Permanent Account Number)।
                national_id:
                  type: string
                  description: राष्ट्रीय पहचान संख्या (CHN, MYS, KEN, KHM, NGA, ZAF, …)।
                cic:
                  type: string
                  description: >-
                    मेक्सिकन INE/IFE Código de Identificación de Credencial
                    (CIC), 9 अंक। MEX INE क्रेडेंशियल-वैधता सेवा
                    (`mex_ine_vigencia`) द्वारा उपयोग किया जाता है।
                identificador_ciudadano:
                  type: string
                  description: >-
                    मेक्सिकन INE Identificador del Ciudadano (9 अंक)।
                    `mex_ine_vigencia` में आधुनिक INE मॉडल (E/F/G/H) के लिए
                    `cic` के साथ उपयोग किया जाता है।
                ocr:
                  type: string
                  description: >-
                    मेक्सिकन INE OCR नंबर (13 अंक, कार्ड का पिछला भाग)।
                    `mex_ine_vigencia` में मॉडल D के लिए `cic` के साथ उपयोग किया
                    जाता है।
                voter_number:
                  type: string
                  description: >-
                    मेक्सिकन INE Clave de Elector (18 वर्ण)। `mex_ine_vigencia`
                    में लीगेसी IFE मॉडल (A/B/C) के लिए `emission_number` के साथ
                    उपयोग किया जाता है।
                emission_number:
                  type: string
                  description: >-
                    मेक्सिकन INE Número de Emisión। `mex_ine_vigencia` में
                    लीगेसी IFE मॉडल (A/B/C) के लिए `voter_number` के साथ उपयोग
                    किया जाता है।
                bvn:
                  type: string
                  description: नाइजीरियाई बैंक सत्यापन संख्या।
                bank_card_number:
                  type: string
                  description: बैंक कार्ड नंबर (CHN बैंक-कार्ड सत्यापन)।
                company_registration_number:
                  type: string
                  description: >-
                    कंपनी पंजीकरण संख्या जैसा कि कंपनी रजिस्ट्री द्वारा जारी
                    किया गया है: ब्राज़ील में CNPJ (उदा. `11222333000181`),
                    दक्षिण अफ्रीका में पंजीकरण संख्या (उदा. `1936/007721/06`)।
                    कंपनी रजिस्ट्री और कंपनी निदेशक सेवाओं
                    (`bra_company_registry`, `bra_company_directors`,
                    `zaf_company_registry`, `zaf_company_directors`) द्वारा
                    आवश्यक।
                company_name:
                  type: string
                  description: >-
                    पंजीकृत कंपनी का नाम, रजिस्टर प्रविष्टि के साथ क्रॉस-चेक
                    किया गया। `zaf_company_registry` के लिए वैकल्पिक।
                initials:
                  type: string
                  description: >-
                    दस्तावेज़ पर छपे व्यक्ति के आद्याक्षर। `zaf_drivers_license`
                    के लिए आवश्यक; `zaf_bank_account_holder` द्वारा स्वीकृत।
                licence_number:
                  type: string
                  description: >-
                    `zaf_drivers_license` के लिए कार्ड पर मुद्रित ड्राइविंग
                    लाइसेंस संख्या। छोड़े जाने पर, `document_number` का उपयोग
                    किया जाता है।
                refugee_file_number:
                  type: string
                  description: >-
                    दक्षिण अफ़्रीका के गृह विभाग द्वारा जारी की गई शरणार्थी
                    फ़ाइल संख्या। `zaf_refugee` द्वारा आवश्यक।
                bank_name:
                  type: string
                  description: >-
                    उस बैंक का नाम जिसमें खाता है। `zaf_bank_account_holder` के
                    लिए आवश्यक।
                bank_account_number:
                  type: string
                  description: >-
                    बैंक खाता संख्या। `zaf_bank_account_holder` द्वारा आवश्यक;
                    `zaf_fraud_prevention` द्वारा स्वीकृत।
                account_type:
                  type: string
                  description: >-
                    `zaf_bank_account_holder` के लिए बैंक खाते का प्रकार:
                    `current`, `savings`, `transmission`, `subscriptionShare` या
                    `notKnown`, केस-असंवेदनशील। कोई भी अन्य मान `400` लौटाता है।
                    जब आपको प्रकार न पता हो तो इसे छोड़ दें: खाता-प्रकार
                    क्रॉस-चेक तब अपुष्ट के रूप में रिपोर्ट किया जाता है।
                phone_number:
                  type: string
                  description: >-
                    संपर्क मोबाइल नंबर, उन सेवाओं के लिए जो संपर्क क्षमता की
                    क्रॉस-जांच करती हैं (`zaf_bank_account_holder`,
                    `zaf_fraud_prevention`, `zaf_refugee`)।
                right_thumb:
                  type: string
                  description: >-
                    `zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड दाएं
                    अंगूठे का फ़िंगरप्रिंट, `left_thumb` के साथ या अकेले।
                left_thumb:
                  type: string
                  description: >-
                    `zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड बाएं
                    अंगूठे का फ़िंगरप्रिंट, `right_thumb` के साथ या अकेले।
                score_level:
                  type: integer
                  description: >-
                    `zaf_criminal_face_screening` के लिए न्यूनतम बायोमेट्रिक
                    स्कोर स्तर। डिफ़ॉल्ट `3` है।
                max_matches:
                  type: integer
                  description: >-
                    `zaf_criminal_face_screening` द्वारा लौटाए जाने वाले
                    उम्मीदवार मिलानों की अधिकतम संख्या। डिफ़ॉल्ट `1` है।
                vehicle_register_number:
                  type: string
                  description: >-
                    वाहन पंजीकरण संख्या। `zaf_vehicle_ownership` द्वारा
                    `vehicle_licence_plate` और `vin` के साथ आवश्यक।
                vehicle_licence_plate:
                  type: string
                  description: >-
                    वाहन लाइसेंस प्लेट नंबर। `zaf_vehicle_ownership` द्वारा
                    `vehicle_register_number` और `vin` के साथ आवश्यक।
                vin:
                  type: string
                  description: >-
                    वाहन पहचान संख्या (VIN या चेसिस नंबर)।
                    `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और
                    `vehicle_licence_plate` के साथ आवश्यक।
                ssn:
                  type: string
                  description: सोशल सिक्योरिटी नंबर (USA)।
                phone:
                  type: string
                  description: फ़ोन-सत्यापन सेवाओं के लिए फ़ोन नंबर।
                landline:
                  type: string
                  description: फ़ोन सत्यापन सेवाओं के लिए लैंडलाइन नंबर।
                email:
                  type: string
                  format: email
                  description: पहचान सत्यापन सेवाओं के लिए ईमेल पता।
                country_of_residence:
                  type: string
                  description: >-
                    निवास का ISO 3166-1 alpha-2 देश। लुकअप को फ़ोकस करने के लिए
                    वैश्विक पहचान-संवर्धन सेवाओं (उदा.
                    `glb_identity_enrichment`) द्वारा उपयोग किया जाता है।
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    `partial_match` द्वारा `database_validation.status` पर की
                    जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `NO_ACTION` (स्थिति
                    चेतावनी के साथ `Approved` रहती है)।
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    `no_match` द्वारा `database_validation.status` पर की जाने
                    वाली कार्रवाई। डिफ़ॉल्ट रूप से `DECLINE`।
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    सत्यापन को एक सत्र के रूप में बनाए रखें (कंसोल दृश्यता,
                    निर्णय endpoint, `status.updated` webhook)। यह `validations`
                    रिस्पॉन्स के फ़ॉर्मैट को भी बदलता है: `true` (डिफ़ॉल्ट) होने
                    पर प्रति-सेवा ऑब्जेक्ट, `false` होने पर मर्ज किया गया फ़ील्ड
                    मैप।
                vendor_data:
                  type: string
                  description: >-
                    सत्यापित उपयोगकर्ता के लिए आपका पहचानकर्ता; वापस दोहराया
                    जाता है और सत्र के साथ संग्रहीत किया जाता है।
                metadata:
                  type: object
                  nullable: true
                  description: अनुरोध के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।
            example:
              issuing_state: BRA
              services:
                - bra_cpf
              identification_number: '12345678900'
              first_name: John
              last_name: Doe
              date_of_birth: '1980-01-01'
              vendor_data: user-1234
          multipart/form-data:
            schema:
              type: object
              required:
                - issuing_state
              properties:
                issuing_state:
                  type: string
                  description: >-
                    सत्यापन के लिए रजिस्ट्री का ISO 3166-1 **alpha-3** देश कोड
                    (उदाहरण के लिए `BRA`, `ESP`, `COL`)। यह निर्धारित करता है कि
                    कौन सी सेवाएँ उपलब्ध हैं। असमर्थित कोड मान्य विकल्पों की
                    पूरी सूची के साथ `400` लौटाते हैं।
                  example: BRA
                services:
                  type: array
                  items:
                    type: string
                  description: >-
                    इस देश के लिए चलाए जाने वाले कैटलॉग `service_id` (उदा.
                    `["bra_cpf"]`)। यह एकल स्ट्रिंग या
                    कॉमा-सेपरेटेड/JSON-एन्कोडेड स्ट्रिंग भी स्वीकार करता है।
                    **यदि छोड़ दिया जाए या खाली हो, तो ठीक एक डिफ़ॉल्ट सेवा चलती
                    है** — देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा; अधिक
                    नई, बायोमेट्रिक, और पे-ऐज़-यू-गो सेवाओं को स्पष्ट रूप से
                    नामित किया जाना चाहिए। `services` भेजने से रिस्पॉन्स
                    विस्तारित आकार में बदल जाता है (`services_used` और
                    `match_score` जुड़ जाते हैं)। प्रत्येक id का अस्तित्व होना
                    चाहिए और `issuing_state` के लिए लाइव होना चाहिए; जिन सेवाओं
                    के लिए ऑनबोर्डिंग की आवश्यकता होती है, वे आपके संगठन के लिए
                    सक्रिय होने तक `400` लौटाती हैं। `GET
                    /v1/organization/database-validation-countries/` (एक कैटलॉग
                    endpoint जो इस विनिर्देश में प्रलेखित नहीं है) या Business
                    Console वर्कफ़्लो संपादक के माध्यम से प्रति देश उपलब्ध
                    सेवाओं की खोज करें।
                  example:
                    - bra_cpf
                validation_type:
                  type: string
                  deprecated: true
                  description: >-
                    अप्रचलित। पश्चगामी अनुकूलता के लिए स्वीकृत लेकिन अनदेखा —
                    रिस्पॉन्स `validation_type` अब इस बात से लिया जाता है कि
                    कितनी सेवाएँ पूरी तरह से मेल खाती हैं। विशिष्ट सेवाओं को पिन
                    करने के लिए `services` का उपयोग करें।
                consent:
                  type: boolean
                  default: false
                  description: >-
                    जब अंतिम उपयोगकर्ता ने चयनित सत्यापन सेवाओं के लिए स्पष्ट
                    रूप से सहमति दी हो, तो `true` पर सेट करें। कैटलॉग में
                    `requires_consent=true` के रूप में फ़्लैग की गई सेवाओं के
                    लिए यह आवश्यक है — इसके बिना वे सेवाएँ
                    `services_requiring_consent` के साथ `400` लौटाती हैं।
                identification_number:
                  type: string
                  description: >-
                    सार्वभौमिक पहचान संख्या — स्वचालित रूप से सही देश-विशिष्ट
                    फ़ील्ड में मैप की जाती है, ताकि आप इसे
                    `personal_number`/`tax_number`/`document_number` के स्थान पर
                    उपयोग कर सकें: ARG→document_number (DNI),
                    BOL→document_number (CI), BRA→tax_number (CPF, 11 अंक),
                    CHL→personal_number (RUT), COL→personal_number (Cédula),
                    CRI→personal_number (Cédula), DOM→personal_number (Cédula,
                    11 अंक), ECU→personal_number (Cédula, 10 अंक),
                    ESP→personal_number (DNI/NIE), GTM→document_number (DPI),
                    HND→document_number (DNI), MEX→personal_number (CURP, 18
                    वर्ण), PAN→personal_number (Cédula), PER→personal_number
                    (DNI, 8 अंक), PRY→document_number (CI), SLV→document_number
                    (DUI), URY→personal_number (CI), VEN→document_number
                    (Cédula)। यह स्पष्ट रूप से प्रदान किए गए देश-विशिष्ट फ़ील्ड
                    को कभी भी ओवरराइड नहीं करता है।
                first_name:
                  type: string
                  description: व्यक्ति का पहला नाम। कुछ सेवाओं/देशों के लिए आवश्यक।
                  example: John
                last_name:
                  type: string
                  description: व्यक्ति का अंतिम नाम। कुछ सेवाओं/देशों द्वारा आवश्यक।
                  example: Doe
                middle_name:
                  type: string
                  description: >-
                    मध्य नाम, कुछ देश सेवाओं (AUS, NZL, …) द्वारा उपयोग किया
                    जाता है।
                full_name:
                  type: string
                  description: >-
                    पूरा नाम — कुछ सेवाएँ इसे प्रथम/अंतिम नाम के बदले स्वीकार
                    करती हैं (उदाहरण के लिए CHN सेवाएँ, जो मूल-लिपि नाम का मिलान
                    करती हैं)।
                date_of_birth:
                  type: string
                  format: date
                  description: जन्म तिथि, `YYYY-MM-DD`। कई सेवाओं द्वारा आवश्यक।
                  example: '1980-01-01'
                personal_number:
                  type: string
                  description: >-
                    सरकार द्वारा जारी विशिष्ट व्यक्तिगत पहचानकर्ता। इनके द्वारा
                    उपयोग किया जाता है: CHL (RUT), COL (Cédula), CRI, DOM, ECU,
                    ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY।
                    इसके बजाय `identification_number` पर विचार करें।
                tax_number:
                  type: string
                  description: >-
                    कर पहचान संख्या। इनमें प्रयुक्त: BRA (CPF, 11 अंक)। इसके
                    बजाय `identification_number` का उपयोग करने पर विचार करें।
                document_number:
                  type: string
                  description: >-
                    दस्तावेज़ संख्या। इनके द्वारा उपयोग किया जाता है: ARG (DNI),
                    BOL (CI), GTM (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN
                    (Cédula)। इसके बजाय `identification_number` पर विचार करें।
                document_type:
                  type: string
                  enum:
                    - P
                    - DL
                    - ID
                    - RP
                    - SSC
                    - HIC
                    - WP
                    - TC
                    - VISA
                    - PSC
                    - BC
                    - OTHER
                  description: >-
                    सत्यापित किए जा रहे दस्तावेज़ का प्रकार: `P` पासपोर्ट, `DL`
                    ड्राइविंग लाइसेंस, `ID` राष्ट्रीय पहचान पत्र, `RP` निवास
                    परमिट (साथ ही `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`,
                    `OTHER`)। कुछ सेवाओं (जैसे ESP) द्वारा आवश्यक।
                expiration_date:
                  type: string
                  format: date
                  description: >-
                    दस्तावेज़ की समाप्ति तिथि, `YYYY-MM-DD`। ESP (स्पेन) सत्यापन
                    के लिए आवश्यक।
                  example: '2030-01-15'
                date_of_issue:
                  type: string
                  format: date
                  description: >-
                    दस्तावेज़ जारी करने की तिथि, `YYYY-MM-DD` (fecha de
                    expedición)। COL (कोलंबिया) cédula सत्यापन के लिए आवश्यक।
                  example: '2015-06-20'
                nationality:
                  type: string
                  description: >-
                    ISO 3166-1 alpha-3 के रूप में राष्ट्रीयता। कुछ सेवाओं द्वारा
                    आवश्यक।
                gender:
                  type: string
                  enum:
                    - M
                    - F
                    - X
                  description: >-
                    लिंग: `M`, `F`, या `X` (अन्य/अज्ञात)। अर्जेंटीना के RENAPER
                    सत्यापन (`arg_renaper`) के लिए आवश्यक।
                address:
                  description: >-
                    आवासीय पता। संरचित ऑब्जेक्ट `{"street_1":"123 Main
                    St","street_2":"Apt
                    4B","city":"Springfield","region":"IL","postal_code":"62701","country":"US"}`
                    को प्राथमिकता दें; पूरी सिंगल-लाइन स्ट्रिंग अभी भी स्वीकार
                    की जाती है। पता-सत्यापन सेवाओं द्वारा आवश्यक; जब कोई सेवा
                    पते की आवश्यकताएं निर्धारित करती है, तो छूटे हुए हिस्से
                    `address_fields_required_by` के साथ `400` लौटाते हैं।
                  oneOf:
                    - type: object
                      properties:
                        street_1:
                          type: string
                        street_2:
                          type: string
                        city:
                          type: string
                        region:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                    - type: string
                      description: पूर्ण एकल-पंक्ति पता (लीगेसी)।
                address_element_1:
                  type: string
                  description: >-
                    सड़क संख्या और प्रकार सहित सड़क का पता। यदि छोड़ दिया जाए,
                    तो यह `address` से प्राप्त किया जाता है।
                address_element_2:
                  type: string
                  description: >-
                    अपार्टमेंट, यूनिट, भवन, फ़्लोर, या अतिरिक्त पता पंक्ति। केवल
                    तभी भेजें जब आपके पास यह स्पष्ट रूप से उपलब्ध हो।
                address_element_3:
                  type: string
                  description: >-
                    शहर, उपनगर, ज़िला, इलाका या पड़ोस। यदि छोड़ा गया है, तो
                    `address` से प्राप्त किया जाता है।
                address_element_4:
                  type: string
                  description: >-
                    राज्य, प्रांत, क्षेत्र या कस्बा। यदि छोड़ दिया जाए, तो
                    `address` से प्राप्त किया जाता है।
                address_element_5:
                  type: string
                  description: >-
                    पोस्टकोड या डाक कोड। `postal_code` को एक उपनाम के रूप में
                    स्वीकार किया जाता है।
                postal_code:
                  type: string
                  description: >-
                    पता-आधारित सेवाओं के लिए डाक कोड (`address_element_5` का
                    उपनाम)।
                driver_license_number:
                  type: string
                  description: >-
                    सरकारी दस्तावेज़-सत्यापन सेवाओं (AUS, NZL, IND) के लिए
                    ड्राइविंग लाइसेंस संख्या।
                driver_license_card_number:
                  type: string
                  description: >-
                    भौतिक ड्राइविंग लाइसेंस कार्ड नंबर, जहाँ लाइसेंस नंबर (AUS)
                    से अलग आवश्यक हो।
                driver_license_state:
                  type: string
                  description: ड्राइविंग लाइसेंस जारी करने वाला राज्य या क्षेत्र (AUS)।
                driver_license_version:
                  type: string
                  description: ड्राइविंग लाइसेंस वर्ज़न कोड (NZL)।
                passport_number:
                  type: string
                  description: >-
                    सरकारी पासपोर्ट-सत्यापन सेवाओं (AUS, NZL, IND, CHN) के लिए
                    पासपोर्ट संख्या।
                passport_expiration_date:
                  type: string
                  format: date
                  description: >-
                    पासपोर्ट समाप्ति तिथि, `YYYY-MM-DD`, पासपोर्ट-सत्यापन सेवाओं
                    के लिए।
                passport_file_number:
                  type: string
                  description: पासपोर्ट फ़ाइल संख्या (IND)।
                passport_issue_country:
                  type: string
                  description: >-
                    पासपोर्ट-सत्यापन सेवाओं के लिए पासपोर्ट का जारीकर्ता देश
                    (ISO 3166-1 alpha-3)।
                medicare_card_number:
                  type: string
                  description: मेडिकेयर कार्ड नंबर (AUS)।
                immi_card_number:
                  type: string
                  description: ऑस्ट्रेलियाई ImmiCard संख्या।
                immi_card_expiry_date:
                  type: string
                  format: date
                  description: ऑस्ट्रेलियाई ImmiCard की समाप्ति तिथि।
                citizenship_certificate_number:
                  type: string
                  description: नागरिकता प्रमाणपत्र संख्या (AUS)।
                birth_registration_number:
                  type: string
                  description: जन्म प्रमाण पत्र पंजीकरण संख्या (AUS)।
                birth_registration_date:
                  type: string
                  format: date
                  description: जन्म प्रमाण पत्र पंजीकरण तिथि (AUS)।
                birth_registration_state:
                  type: string
                  description: जन्म प्रमाण पत्र पंजीकरण राज्य (AUS)।
                marriage_certificate_number:
                  type: string
                  description: विवाह प्रमाण पत्र संख्या (AUS)।
                change_of_name_certificate_number:
                  type: string
                  description: नाम परिवर्तन प्रमाणपत्र संख्या (AUS)।
                first_partner_name:
                  type: string
                  description: विवाह प्रमाण पत्र (AUS) पर साथी का पहला नाम।
                last_partner_name:
                  type: string
                  description: विवाह प्रमाण पत्र (AUS) पर साथी का अंतिम नाम।
                voter_id:
                  type: string
                  description: मतदाता पंजीकरण संख्या (IND EPIC, IRL)।
                epic_card:
                  type: string
                  description: भारत EPIC वोटर कार्ड नंबर।
                pan:
                  type: string
                  description: भारत PAN (Permanent Account Number)।
                national_id:
                  type: string
                  description: राष्ट्रीय पहचान संख्या (CHN, MYS, KEN, KHM, NGA, ZAF, …)।
                cic:
                  type: string
                  description: >-
                    मेक्सिकन INE/IFE Código de Identificación de Credencial
                    (CIC), 9 अंक। MEX INE क्रेडेंशियल-वैधता सेवा
                    (`mex_ine_vigencia`) द्वारा उपयोग किया जाता है।
                identificador_ciudadano:
                  type: string
                  description: >-
                    मेक्सिकन INE Identificador del Ciudadano (9 अंक)।
                    `mex_ine_vigencia` में आधुनिक INE मॉडल (E/F/G/H) के लिए
                    `cic` के साथ उपयोग किया जाता है।
                ocr:
                  type: string
                  description: >-
                    मेक्सिकन INE OCR नंबर (13 अंक, कार्ड का पिछला भाग)।
                    `mex_ine_vigencia` में मॉडल D के लिए `cic` के साथ उपयोग किया
                    जाता है।
                voter_number:
                  type: string
                  description: >-
                    मेक्सिकन INE Clave de Elector (18 वर्ण)। `mex_ine_vigencia`
                    में लीगेसी IFE मॉडल (A/B/C) के लिए `emission_number` के साथ
                    उपयोग किया जाता है।
                emission_number:
                  type: string
                  description: >-
                    मेक्सिकन INE Número de Emisión। `mex_ine_vigencia` में
                    लीगेसी IFE मॉडल (A/B/C) के लिए `voter_number` के साथ उपयोग
                    किया जाता है।
                bvn:
                  type: string
                  description: नाइजीरियाई बैंक सत्यापन संख्या।
                bank_card_number:
                  type: string
                  description: बैंक कार्ड नंबर (CHN बैंक-कार्ड सत्यापन)।
                company_registration_number:
                  type: string
                  description: >-
                    कंपनी पंजीकरण संख्या जैसा कि कंपनी रजिस्ट्री द्वारा जारी
                    किया गया है: ब्राज़ील में CNPJ (उदा. `11222333000181`),
                    दक्षिण अफ्रीका में पंजीकरण संख्या (उदा. `1936/007721/06`)।
                    कंपनी रजिस्ट्री और कंपनी निदेशक सेवाओं
                    (`bra_company_registry`, `bra_company_directors`,
                    `zaf_company_registry`, `zaf_company_directors`) द्वारा
                    आवश्यक।
                company_name:
                  type: string
                  description: >-
                    पंजीकृत कंपनी का नाम, रजिस्टर प्रविष्टि के साथ क्रॉस-चेक
                    किया गया। `zaf_company_registry` के लिए वैकल्पिक।
                initials:
                  type: string
                  description: >-
                    दस्तावेज़ पर छपे व्यक्ति के आद्याक्षर। `zaf_drivers_license`
                    के लिए आवश्यक; `zaf_bank_account_holder` द्वारा स्वीकृत।
                licence_number:
                  type: string
                  description: >-
                    `zaf_drivers_license` के लिए कार्ड पर मुद्रित ड्राइविंग
                    लाइसेंस संख्या। छोड़े जाने पर, `document_number` का उपयोग
                    किया जाता है।
                refugee_file_number:
                  type: string
                  description: >-
                    दक्षिण अफ़्रीका के गृह विभाग द्वारा जारी की गई शरणार्थी
                    फ़ाइल संख्या। `zaf_refugee` द्वारा आवश्यक।
                bank_name:
                  type: string
                  description: >-
                    उस बैंक का नाम जिसमें खाता है। `zaf_bank_account_holder` के
                    लिए आवश्यक।
                bank_account_number:
                  type: string
                  description: >-
                    बैंक खाता संख्या। `zaf_bank_account_holder` द्वारा आवश्यक;
                    `zaf_fraud_prevention` द्वारा स्वीकृत।
                account_type:
                  type: string
                  description: >-
                    `zaf_bank_account_holder` के लिए बैंक खाते का प्रकार:
                    `current`, `savings`, `transmission`, `subscriptionShare` या
                    `notKnown`, केस-असंवेदनशील। कोई भी अन्य मान `400` लौटाता है।
                    जब आपको प्रकार न पता हो तो इसे छोड़ दें: खाता-प्रकार
                    क्रॉस-चेक तब अपुष्ट के रूप में रिपोर्ट किया जाता है।
                phone_number:
                  type: string
                  description: >-
                    संपर्क मोबाइल नंबर, उन सेवाओं के लिए जो संपर्क क्षमता की
                    क्रॉस-जांच करती हैं (`zaf_bank_account_holder`,
                    `zaf_fraud_prevention`, `zaf_refugee`)।
                right_thumb:
                  type: string
                  description: >-
                    `zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड दाएं
                    अंगूठे का फ़िंगरप्रिंट, `left_thumb` के साथ या अकेले।
                left_thumb:
                  type: string
                  description: >-
                    `zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड बाएं
                    अंगूठे का फ़िंगरप्रिंट, `right_thumb` के साथ या अकेले।
                score_level:
                  type: integer
                  description: >-
                    `zaf_criminal_face_screening` के लिए न्यूनतम बायोमेट्रिक
                    स्कोर स्तर। डिफ़ॉल्ट `3` है।
                max_matches:
                  type: integer
                  description: >-
                    `zaf_criminal_face_screening` द्वारा लौटाए जाने वाले
                    उम्मीदवार मिलानों की अधिकतम संख्या। डिफ़ॉल्ट `1` है।
                vehicle_register_number:
                  type: string
                  description: >-
                    वाहन पंजीकरण संख्या। `zaf_vehicle_ownership` द्वारा
                    `vehicle_licence_plate` और `vin` के साथ आवश्यक।
                vehicle_licence_plate:
                  type: string
                  description: >-
                    वाहन लाइसेंस प्लेट नंबर। `zaf_vehicle_ownership` द्वारा
                    `vehicle_register_number` और `vin` के साथ आवश्यक।
                vin:
                  type: string
                  description: >-
                    वाहन पहचान संख्या (VIN या चेसिस नंबर)।
                    `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और
                    `vehicle_licence_plate` के साथ आवश्यक।
                ssn:
                  type: string
                  description: सोशल सिक्योरिटी नंबर (USA)।
                phone:
                  type: string
                  description: फ़ोन-सत्यापन सेवाओं के लिए फ़ोन नंबर।
                landline:
                  type: string
                  description: फ़ोन सत्यापन सेवाओं के लिए लैंडलाइन नंबर।
                email:
                  type: string
                  format: email
                  description: पहचान सत्यापन सेवाओं के लिए ईमेल पता।
                country_of_residence:
                  type: string
                  description: >-
                    निवास का ISO 3166-1 alpha-2 देश। लुकअप को फ़ोकस करने के लिए
                    वैश्विक पहचान-संवर्धन सेवाओं (उदा.
                    `glb_identity_enrichment`) द्वारा उपयोग किया जाता है।
                  example: US
                partial_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: NO_ACTION
                  description: >-
                    `partial_match` द्वारा `database_validation.status` पर की
                    जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `NO_ACTION` (स्थिति
                    चेतावनी के साथ `Approved` रहती है)।
                no_match_action:
                  type: string
                  enum:
                    - DECLINE
                    - NO_ACTION
                  default: DECLINE
                  description: >-
                    `no_match` द्वारा `database_validation.status` पर की जाने
                    वाली कार्रवाई। डिफ़ॉल्ट रूप से `DECLINE`।
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    सत्यापन को एक सत्र के रूप में बनाए रखें (कंसोल दृश्यता,
                    निर्णय endpoint, `status.updated` webhook)। यह `validations`
                    रिस्पॉन्स के फ़ॉर्मैट को भी बदलता है: `true` (डिफ़ॉल्ट) होने
                    पर प्रति-सेवा ऑब्जेक्ट, `false` होने पर मर्ज किया गया फ़ील्ड
                    मैप।
                vendor_data:
                  type: string
                  description: >-
                    सत्यापित उपयोगकर्ता के लिए आपका पहचानकर्ता; वापस दोहराया
                    जाता है और सत्र के साथ संग्रहीत किया जाता है।
                metadata:
                  type: object
                  nullable: true
                  description: अनुरोध के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।
                selfie:
                  type: string
                  format: binary
                  description: >-
                    बायोमेट्रिक सत्यापन सेवाओं के लिए सेल्फ़ी छवि (`jpg`,
                    `jpeg`, `png`, `webp`; अधिकतम 2 MB — रजिस्ट्री में अपलोड
                    करने से पहले छवियाँ ~1.5 MB तक संपीड़ित की जाती हैं), उदाहरण
                    के लिए अर्जेंटीना RENAPER (`arg_renaper`) और पनामा SIB
                    (`pan_cedula_sib`, `pan_cedula_sib_plus`)। जब भी कोई चयनित
                    सेवा इसे एक आवश्यक फ़ील्ड के रूप में सूचीबद्ध करती है, तो यह
                    आवश्यक है। केवल `multipart/form-data` के माध्यम से उपलब्ध।
      responses:
        '200':
          description: >-
            सत्यापन पूरा हुआ — कम से कम एक चयनित सेवा ने प्रयोग करने योग्य
            परिणाम लौटाया। समग्र परिणाम के लिए `database_validation.match_type`,
            प्रति-सेवा फ़ील्ड तुलनाओं और `outcome_code`s के लिए `validations`,
            और विफल सेवाओं के लिए `errors` (उपस्थित होने पर) का निरीक्षण करें।
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      `save_api_request=true` होने पर सहेजी गई सत्र ID (`GET
                      /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य);
                      अन्यथा एक क्षणिक सहसंबंध UUID।
                  database_validation:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - Declined
                          - In Review
                        description: >-
                          `Declined` जब समग्र `match_type` एक `DECLINE` कार्रवाई
                          को ट्रिगर करता है (`no_match_action` का डिफ़ॉल्ट
                          `DECLINE` है, `partial_match_action` का `NO_ACTION`);
                          `In Review` जब किसी भी सेवा ने उपयोग करने योग्य तुलना
                          उत्पन्न नहीं की, उदाहरण के लिए जब एकमात्र चयनित सेवा
                          `REGISTRY_UNAVAILABLE` या `INCONCLUSIVE` के रूप में
                          लौटी; अन्यथा `Approved`। कई सेवाओं का चयन करने वाला
                          अनुरोध एक सेवा के मिलान पर `Approved` हो सकता है जबकि
                          दूसरी अनुपलब्ध थी, इसलिए `errors` और प्रति-सेवा
                          `outcome_code` भी देखें।
                      issuing_state:
                        type: string
                        description: सत्यापित किए गए ISO 3166-1 alpha-3 देश का इको।
                        example: BRA
                      validation_type:
                        type: string
                        enum:
                          - one_by_one
                          - two_by_two
                        description: >-
                          परिणामों से प्राप्त: `two_by_two` जब ≥2 अलग-अलग सेवाओं
                          ने पूर्ण मिलान प्रस्तुत किया (पहचान संख्या पर, पूरे
                          नाम + जन्म तिथि पर एक साथ, या बिना किसी विरोधाभास के
                          पते पर); अन्यथा `one_by_one`। (समान नाम वाला अनुरोध
                          फ़ील्ड बहिष्कृत और अनदेखा किया जाता है।)
                      screened_data:
                        type: object
                        description: >-
                          चयनित सेवाओं को भेजे गए इनपुट फ़ील्ड्स का इको (तारीखें
                          `YYYY-MM-DD` में सामान्यीकृत की गई हैं; भेजे जाने पर
                          `selfie` को प्री-साइन्ड URL के रूप में लौटाया जाता है;
                          सहमति दिए जाने पर `consent_obtained: true` जोड़ा जाता
                          है)।
                      match_type:
                        type: string
                        nullable: true
                        enum:
                          - full_match
                          - partial_match
                          - no_match
                        description: >-
                          फ़ील्ड-स्तरीय तुलना वाली सेवाओं में एकत्रित समग्र
                          परिणाम: कोई भी `full_match` → `full_match`; अन्यथा कोई
                          भी `partial_match` → `partial_match`; अन्यथा
                          `no_match`। केवल-परिणाम सेवाएँ, जैसे कि बायोमेट्रिक
                          आपराधिक स्क्रीनिंग, `null` लौटा सकती हैं;
                          `validations` में प्रत्येक आइटम के `outcome_code` का
                          निरीक्षण करें।
                      validations:
                        description: >-
                          `save_api_request` पर आकार निर्भर करता है। **`true`
                          (डिफ़ॉल्ट):** प्रति-सेवा ऑब्जेक्ट्स की एक ऐरे
                          (`service_id`, `service_name`, `validation`,
                          `outcome_code`, `outcome_detail`, `source_data`)।
                          **`false`:** सभी सेवाओं के फ़ील्ड-स्तरीय परिणामों को
                          मर्ज करने वाला एक एकल फ़्लैट ऑब्जेक्ट (`{"full_name":
                          "full_match", ...}`)।
                        oneOf:
                          - type: array
                            items:
                              type: object
                              description: >-
                                प्रति-सेवा सत्यापन परिणाम
                                (`save_api_request=true` होने पर लौटाया जाता है,
                                जो डिफ़ॉल्ट है)।
                              properties:
                                service_id:
                                  type: string
                                  description: >-
                                    इस परिणाम को उत्पन्न करने वाली सेवा का
                                    कैटलॉग id (उदा. `bra_cpf`)।
                                  example: bra_cpf
                                service_name:
                                  type: string
                                  description: सेवा का मानव-पठनीय कैटलॉग नाम।
                                  example: Brazil - CPF status check
                                validation:
                                  type: object
                                  description: >-
                                    आपके इनपुट और रजिस्ट्री रिकॉर्ड के बीच
                                    फ़ील्ड-दर-फ़ील्ड तुलना। कुंजियाँ विहित
                                    (canonical) फ़ील्ड नाम (`full_name`,
                                    `date_of_birth`, `identification_number`,
                                    `address`, …) हैं; मान `full_match`,
                                    `partial_match`, या `no_match` हैं।
                                  additionalProperties:
                                    type: string
                                    enum:
                                      - full_match
                                      - partial_match
                                      - no_match
                                outcome_code:
                                  type: string
                                  enum:
                                    - MATCH
                                    - PARTIAL_MATCH
                                    - NO_MATCH
                                    - DOCUMENT_NOT_FOUND
                                    - INVALID_DOCUMENT_FORMAT
                                    - INVALID_INPUT
                                    - MINOR_BLOCKED
                                    - DECEASED
                                    - BIOMETRIC_NO_MATCH
                                    - BIOMETRIC_IMAGE_UNUSABLE
                                    - INCONCLUSIVE
                                    - DOCUMENT_SUPERSEDED
                                    - REGISTRY_UNAVAILABLE
                                    - REGISTRY_ERROR
                                  description: >-
                                    रजिस्ट्री लुकअप का वेंडर-तटस्थ परिणाम।
                                    `MATCH`/`PARTIAL_MATCH`/`NO_MATCH` तुलना का
                                    वर्णन करते हैं; `DOCUMENT_NOT_FOUND` का अर्थ
                                    है कि पहचानकर्ता रजिस्ट्री में नहीं है;
                                    `INCONCLUSIVE` का अर्थ है कि रजिस्ट्री किसी
                                    भी तरह से पुष्टि नहीं कर सकी (समीक्षा के लिए
                                    भेजा गया — नो-मैच नहीं);
                                    `BIOMETRIC_NO_MATCH` एक निश्चित चेहरा बेमेल
                                    है जबकि `BIOMETRIC_IMAGE_UNUSABLE` एक तकनीकी
                                    छवि समस्या है (सेल्फ़ी पुनः लें);
                                    `DECEASED`/`MINOR_BLOCKED` रजिस्ट्री-नीति
                                    परिणाम हैं; `DOCUMENT_SUPERSEDED` का अर्थ है
                                    कि पहचान मेल खाती है लेकिन प्रस्तुत
                                    दस्तावेज़ का संस्करण फ़ाइल में मौजूद संस्करण
                                    नहीं है (एक नया संस्करण जारी किया गया है);
                                    `INVALID_DOCUMENT_FORMAT`/`INVALID_INPUT` का
                                    अर्थ है कि रजिस्ट्री ने स्वयं भेजे गए डेटा
                                    को अस्वीकार कर दिया;
                                    `REGISTRY_UNAVAILABLE`/`REGISTRY_ERROR`
                                    अपस्ट्रीम विफलताओं का संकेत देते हैं।
                                outcome_detail:
                                  type: string
                                  nullable: true
                                  description: >-
                                    परिणाम कोड का समर्थन करने वाला रॉ अपस्ट्रीम
                                    स्थिति विवरण (उदा. कोई HTTP या रजिस्ट्री
                                    स्थिति कोड)।
                                source_data:
                                  type: object
                                  nullable: true
                                  description: >-
                                    कैनोनिकल फ़ील्ड नामों
                                    (`identification_number`, `first_name`,
                                    `last_name`, `date_of_birth`, साथ ही
                                    रजिस्ट्री-विशिष्ट फ़्लैग्स) का उपयोग करके
                                    रजिस्ट्री रिकॉर्ड का साफ़, सामान्यीकृत
                                    दृश्य। छवि फ़ील्ड, उपस्थित होने पर,
                                    प्री-हस्ताक्षरित URL के रूप में लौटाए जाते
                                    हैं।
                          - type: object
                            additionalProperties:
                              type: string
                              enum:
                                - full_match
                                - partial_match
                                - no_match
                            description: >-
                              मर्ज किए गए फ़ील्ड-स्तरीय परिणाम (स्टेटलेस
                              `save_api_request=false` संरचना)।
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            feature:
                              type: string
                              description: सुविधा जिसने चेतावनी उत्पन्न की।
                            risk:
                              type: string
                              description: मशीन-पठनीय जोखिम पहचानकर्ता।
                            additional_data:
                              type: object
                              nullable: true
                              description: उपलब्ध होने पर, चेतावनी के लिए अतिरिक्त संदर्भ।
                            log_type:
                              type: string
                              description: >-
                                `warning`, `information`, या `error` — जोखिम ने
                                परिणाम को कैसे प्रभावित किया।
                            short_description:
                              type: string
                              description: एक पंक्ति का मानव-पठनीय सारांश।
                            long_description:
                              type: string
                              description: पूर्ण मानव-पठनीय विवरण।
                        description: >-
                          लागू होने पर `DATABASE_VALIDATION_NO_MATCH` या
                          `DATABASE_VALIDATION_PARTIAL_MATCH`; पूर्ण मिलान पर
                          खाली।
                      errors:
                        type: array
                        description: >-
                          केवल तभी मौजूद होता है जब कुछ (लेकिन सभी नहीं) चयनित
                          सेवाएँ विफल हो जाती हैं। प्रत्येक प्रविष्टि में
                          `service_id`, `code`, `message`, और `retryable` होता
                          है। यहाँ रिपोर्ट की गई सेवा `validations` और
                          `services_used` से अनुपस्थित होती है, और इसका बिल नहीं
                          लिया जाता है। यह ऐरे एकमात्र ऐसा स्थान है जहाँ यह
                          दिखाई देता है, इसलिए इसका निरीक्षण तब भी करें जब
                          `status` `Approved` हो।
                        items:
                          type: object
                          properties:
                            service_id:
                              type: string
                            code:
                              type: string
                              example: empty_provider_response
                            message:
                              type: string
                            retryable:
                              type: boolean
                              description: >-
                                `true` जब सेवा ने कोई उत्तर नहीं दिया और बाद में
                                पुनः प्रयास करने पर यह सफल हो सकता है; `false`
                                जब स्रोत ने भेजे गए डेटा को अस्वीकार कर दिया और
                                इनपुट को पहले ठीक किया जाना चाहिए।
                              example: true
                      services_used:
                        type: array
                        items:
                          type: string
                        description: >-
                          बिल योग्य परिणाम लौटाने वाली सेवाओं के कैटलॉग id।
                          **केवल तब मौजूद होता है जब अनुरोध में स्पष्ट रूप से
                          `services` भेजा गया हो।**
                      match_score:
                        type: number
                        description: >-
                          प्रयास की गई सेवाओं का अंश (0.0–1.0) जिसने पूर्ण मिलान
                          उत्पन्न किया (पहचान संख्या पर, पूरा नाम + जन्म तिथि पर
                          एक साथ, या बिना किसी विरोधाभास के पते पर)। **केवल तभी
                          मौजूद होता है जब अनुरोध ने स्पष्ट रूप से `services`
                          भेजा हो।**
                  vendor_data:
                    type: string
                    nullable: true
                    description: आपके द्वारा भेजे गए `vendor_data` का इको।
                  metadata:
                    type: object
                    nullable: true
                    description: आपके द्वारा भेजे गए `metadata` का इको।
                  created_at:
                    type: string
                    format: date-time
              examples:
                Full match (Approved):
                  summary: >-
                    डिफ़ॉल्ट save_api_request=true — प्रति-सेवा `validations`
                    ऑब्जेक्ट्स
                  value:
                    request_id: 7f9a1c0e-1f2b-4f6e-9d3a-2b1c0e7f9a1c
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '12345678900'
                            first_name: JOHN
                            last_name: DOE
                            date_of_birth: '1980-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                Explicit services (extended shape):
                  summary: >-
                    अनुरोध में `services` भेजे गए — रिस्पॉन्स में
                    `services_used` और `match_score` जुड़ते हैं
                  value:
                    request_id: b3e7c1a2-9d4f-4f0b-8a6c-5e2d1f0a9b3e
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        - validation:
                            full_name: full_match
                            date_of_birth: full_match
                            identification_number: full_match
                          outcome_code: MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '12345678900'
                            first_name: JOHN
                            last_name: DOE
                            date_of_birth: '1980-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings: []
                      services_used:
                        - bra_cpf
                      match_score: 1
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-11T10:30:00.000000+00:00'
                No match (Declined):
                  summary: >-
                    रजिस्ट्री रिकॉर्ड मेल नहीं खाता — डिफ़ॉल्ट
                    `no_match_action=DECLINE`
                  value:
                    request_id: 0a1b2c3d-4e5f-6789-abcd-ef0123456789
                    database_validation:
                      status: Declined
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: no_match
                      validations:
                        - validation:
                            full_name: no_match
                            date_of_birth: no_match
                            identification_number: no_match
                          outcome_code: NO_MATCH
                          outcome_detail: '200'
                          service_id: bra_cpf
                          service_name: Brazil - CPF status check
                          source_data:
                            identification_number: '00987654321'
                            first_name: TOTALLY
                            last_name: DIFFERENT NAME
                            date_of_birth: '1999-01-01'
                            lgpd_minor: false
                            minor_under_16: false
                            minor_under_18: false
                      warnings:
                        - feature: DATABASE_VALIDATION
                          risk: DATABASE_VALIDATION_NO_MATCH
                          additional_data: null
                          log_type: error
                          short_description: Database validation no match
                          long_description: >-
                            The system identified a no match in the database
                            validation, requiring further investigation.
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:31:00.000000+00:00'
                Stateless (save_api_request=false):
                  summary: >-
                    `validations` एक मर्ज किए गए फ़ील्ड मैप में संक्षिप्त हो
                    जाता है; कुछ भी संग्रहीत नहीं किया जाता है
                  value:
                    request_id: c4d5e6f7-8901-2345-6789-abcdef012345
                    database_validation:
                      status: Approved
                      issuing_state: BRA
                      validation_type: one_by_one
                      screened_data:
                        tax_number: '12345678900'
                        first_name: John
                        last_name: Doe
                        date_of_birth: '1980-01-01'
                      match_type: full_match
                      validations:
                        full_name: full_match
                        date_of_birth: full_match
                        identification_number: full_match
                      warnings: []
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:32:00.000000+00:00'
        '400':
          description: >-
            सत्यापन त्रुटि - कुछ भी बिल नहीं किया जाता है। प्रीफ़्लाइट फ़ील्ड
            त्रुटियां किसी भी बाहरी कॉल से पहले होती हैं। यदि प्रत्येक अनुत्तरित
            प्रयास इनपुट को स्पष्ट रूप से अस्वीकार करता है, तो रिस्पॉन्स में
            इसके बजाय `code: provider_rejected_input` और `retryable: false` के
            साथ `validation_errors` शामिल होता है; पुनः प्रयास करने से पहले
            इनपुट को ठीक करें। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवलप का उपयोग
            करती हैं; कैटलॉग समस्याएं एक `services` ऐरे लौटाती हैं (प्रासंगिक
            होने पर `requires_onboarding` या `services_requiring_consent` के
            साथ); अनुपलब्ध-फ़ील्ड त्रुटियों में `fields_required_by` शामिल होता
            है जो प्रत्येक अनुपलब्ध फ़ील्ड को उन सेवाओं से मैप करता है जिन्हें
            इसकी आवश्यकता है; ऐसी सेवाएं जिन्हें कम से कम एक अतिरिक्त पहचानकर्ता
            की आवश्यकता होती है (उदा. `usa_states_credit_bureau`, जो अकेले नाम
            का सत्यापन नहीं कर सकती) `any_field_required_by` लौटाती हैं जो
            प्रत्येक सेवा को उन फ़ील्ड से मैप करती है जिनमें से कम से कम एक
            मौजूद होना चाहिए; प्रति सेवा जांची गई प्रारूप समस्याएं
            `invalid_fields_by_service` लौटाती हैं।
          content:
            application/json:
              examples:
                Invalid issuing_state:
                  summary: >-
                    देश समर्थित नहीं है — संदेश में प्रत्येक मान्य alpha-3 कोड
                    सूचीबद्ध है
                  value:
                    error:
                      - >-
                        Invalid issuing state. Valid options are: ARE, ARG, AUS,
                        AUT, BEL, BGD, BOL, BRA, CAN, CHE, CHL, CHN, CIV, COL,
                        CRI, CZE, DEU, DNK, DOM, ECU, ESP, FIN, FRA, GBR, GHA,
                        GLB, GRC, GTM, HKG, HND, IDN, IND, IRL, ITA, KEN, KHM,
                        MAR, MEX, MYS, NGA, NLD, NOR, NZL, OMN, PAN, PER, PHL,
                        POL, PRT, PRY, QAT, SGP, SLV, SVK, SWE, THA, UGA, URY,
                        USA, VEN, ZAF, ZMB, ZWE
                Missing required fields:
                  summary: >-
                    यूनिवर्सल-फ़ील्ड संकेत के साथ, चयनित सेवाओं में आवश्यक
                    फ़ील्ड का यूनियन
                  value:
                    error:
                      - >-
                        Missing required fields: tax_number (or use
                        'identification_number' which maps to 'tax_number' for
                        BRA)
                    fields_required_by:
                      tax_number:
                        - bra_cpf
                Unknown service id:
                  summary: '`services` में एक ऐसी id शामिल है जो कैटलॉग में नहीं है'
                  value:
                    services:
                      - 'Unknown service_id(s): [''bogus_service'']'
                Service not live for country:
                  summary: >-
                    `services` किसी अन्य देश की सेवा (या एक स्टब प्रविष्टि) का
                    नाम देता है
                  value:
                    services:
                      - >-
                        Services not currently live for PER: ['bra_cpf'].
                        Available services: ['per_dni', 'per_residential',
                        'per_tax_registration']
                Service requires onboarding:
                  summary: >-
                    सेवा मौजूद है लेकिन आपके संगठन के लिए अभी सक्रिय नहीं की गई
                    है
                  value:
                    services:
                      - >-
                        Services require onboarding before they can be enabled
                        for AUS: ['aus_australia_driver_licence']. Contact Didit
                        support to activate them.
                    requires_onboarding:
                      - aus_australia_driver_licence
                Consent missing:
                  summary: >-
                    एक चयनित सेवा requires_consent=true के रूप में फ़्लैग की गई
                    है और `consent` का मान `true` नहीं था
                  value:
                    consent:
                      - >-
                        Explicit end-user consent is required for these database
                        validation services: ['chn_national_id']. Send
                        `consent=true`.
                    services_requiring_consent:
                      - chn_national_id
                Country format rule violation:
                  summary: >-
                    पहचानकर्ता देश के प्रारूप नियम (लंबाई/अंक/regex) में विफल
                    रहता है
                  value:
                    tax_number:
                      - >-
                        Invalid tax number for BRA: Brazilian CPF (exactly 11
                        digits). Must be exactly 11 characters long (got 10).
                Service-specific format violation:
                  summary: >-
                    एक फ़ील्ड चयनित सेवा की अपनी प्रारूप आवश्यकताओं को पूरा करने
                    में विफल रहता है
                  value:
                    error:
                      - >-
                        One or more fields do not match the format required by
                        the selected service.
                    invalid_fields_by_service:
                      chn_national_id:
                        - national_id_format
                Input refused by every attempt:
                  summary: पुनः प्रयास करने से पहले इनपुट को सही करें
                  value:
                    error: >-
                      The source refused to run this query with the supplied
                      input.
                    validation_errors:
                      - service_id: bra_cpf
                        code: provider_rejected_input
                        message: >-
                          The source refused to run this query with the supplied
                          input.
                        retryable: false
              schema:
                type: object
                additionalProperties: true
                properties:
                  error:
                    description: अनुरोध-स्तरीय स्पष्टीकरण या प्रीफ़्लाइट फ़ील्ड त्रुटियाँ।
                    oneOf:
                      - type: string
                      - type: array
                        items:
                          type: string
                  validation_errors:
                    type: array
                    description: >-
                      तब मौजूद होता है जब प्रत्येक अनुत्तरित प्रयास ने
                      प्रीफ़्लाइट के बाद इनपुट को अस्वीकार कर दिया।
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            क्या बाद में पुनः प्रयास करने से यह सेवा विफलता हल
                            हो सकती है। False का अर्थ है पहले प्रदान किए गए
                            इनपुट को सही करें।
        '403':
          description: >-
            अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो,
            और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता;
            गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी
            `{"detail": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा
            समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या
            प्रदाता कॉल से पहले `{"error": ...}` के साथ `403` लौटाती है।
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: संगठन का बैलेंस कॉल को कवर नहीं कर सकता
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति
            API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और
            इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में
            `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और
            `Retry-After` हेडर होते हैं।
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: वर्तमान मिनट में 300 से अधिक राइट अनुरोध
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '502':
          description: >-
            किसी भी चयनित सेवा ने उपयोग करने योग्य परिणाम नहीं दिया। पुनः प्रयास
            करने से पहले प्रत्येक validation_errors प्रविष्टि की जांच करें; केवल
            HTTP 502 क्षणिक विफलता स्थापित नहीं करता है। retryable: true के साथ
            empty_provider_response अनुपलब्ध या अस्पष्टीकृत परिणाम दर्शाता है,
            जिसमें एक अस्वीकृत प्राथमिक के बाद अनुपलब्ध फ़ॉलबैक शामिल है। लेगेसी
            provider_invalid_input और provider_validation_error प्रविष्टियों के
            लिए इसके बजाय सही इनपुट की आवश्यकता होती है और इनमें retryable छोड़ा
            जा सकता है। कुछ भी बिल नहीं किया जाता है। जब save_api_request=true
            होता है, तो विफल प्रयास को Not Finished स्थिति वाले सत्र के रूप में
            रिकॉर्ड किया जाता है। आंशिक विफलताओं पर database_validation.errors
            के साथ 200 लौटाया जाता है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  validation_errors:
                    type: array
                    items:
                      type: object
                      properties:
                        service_id:
                          type: string
                        code:
                          type: string
                        message:
                          type: string
                        retryable:
                          type: boolean
                          description: >-
                            क्या बाद में पुनः प्रयास करने से यह सेवा विफलता हल
                            हो सकती है। False का अर्थ है पहले प्रदान किए गए
                            इनपुट को सही करें।
              examples:
                Provider returned no result:
                  summary: प्रत्येक चयनित सेवा विफल रही
                  value:
                    error: >-
                      Database validation could not be performed. The external
                      validation service did not return a result. Please try
                      again later.
                    validation_errors:
                      - service_id: bra_cpf
                        code: empty_provider_response
                        message: >-
                          The provider did not return a database validation
                          result.
                        retryable: true
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/database-validation/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "issuing_state": "BRA",
                "services": ["bra_cpf"],
                "identification_number": "12345678900",
                "first_name": "John",
                "last_name": "Doe",
                "date_of_birth": "1980-01-01",
                "vendor_data": "user-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.database_validation.validate(
                issuing_state="BRA",
                services=["bra_cpf"],
                identification_number="12345678900",
                first_name="John",
                last_name="Doe",
                date_of_birth="1980-01-01",
                vendor_data="user-1234",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.databaseValidation.validate({
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{\n\tIssuingState:         \"BRA\",\n\tServices:             didit.Some([]string{\"bra_cpf\"}),\n\tIdentificationNumber: didit.String(\"12345678900\"),\n\tFirstName:            didit.String(\"John\"),\n\tLastName:             didit.String(\"Doe\"),\n\tDateOfBirth:          didit.String(\"1980-01-01\"),\n\tVendorData:           didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.time.LocalDate;

            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.DatabaseValidationValidateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
                    .issuingState("BRA")
                    .services(List.of("bra_cpf"))
                    .identificationNumber("12345678900")
                    .firstName("John")
                    .lastName("Doe")
                    .dateOfBirth(LocalDate.parse("1980-01-01"))
                    .vendorData("user-1234")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->databaseValidation->validate([
                'issuing_state' => 'BRA',
                'services' => ['bra_cpf'],
                'identification_number' => '12345678900',
                'first_name' => 'John',
                'last_name' => 'Doe',
                'date_of_birth' => '1980-01-01',
                'vendor_data' => 'user-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.database_validation.validate(
              issuing_state: "BRA",
              services: ["bra_cpf"],
              identification_number: "12345678900",
              first_name: "John",
              last_name: "Doe",
              date_of_birth: "1980-01-01",
              vendor_data: "user-1234"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.DatabaseValidation.ValidateAsync(new
            DatabaseValidationValidateParams

            {
                IssuingState = "BRA",
                Services = new string[] { "bra_cpf" },
                IdentificationNumber = "12345678900",
                FirstName = "John",
                LastName = "Doe",
                DateOfBirth = "1980-01-01",
                VendorData = "user-1234",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        आपकी एप्लिकेशन की API कुंजी, Business Console में Developers -> API keys
        से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप
        किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या
        स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक
        सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी
        समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी,
        कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP
        सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी
        के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को
        छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write
        के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं।
        देखें https://docs.didit.me/console/api-keys।

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.