> ## 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 संदर्भ

> Didit के POST और PATCH /v3/workflows/ में features array से सरल लीनियर वर्कफ़्लो बनाते समय स्वीकार होने वाले सभी कॉन्फ़िग फ़ील्ड का संदर्भ।

इन `config` फ़ील्ड्स का उपयोग [`POST /v3/workflows/`](https://docs.didit.me/hi/management-api/workflows/create) और [`PATCH /v3/workflows/{settings_uuid}/`](https://docs.didit.me/hi/management-api/workflows/update) के लिए `features` ऐरे के हर आइटम के अंदर करें।

```json theme={null}
{
  "workflow_label": "Standard KYC",
  "features": [
    {
      "feature": "OCR",
      "config": {
        "documents_allowed": {
          "USA": {
            "DL": {
              "enabled": 1,
              "sides": 2
            }
          }
        }
      }
    }
  ]
}
```

v3 वर्कफ़्लो API क्रमबद्ध `features` ऐरे से एक रैखिक, नोड-आधारित वर्कफ़्लो बनाता है। सुविधाएँ ठीक उसी निष्पादन क्रम में भेजें।

> [!NOTE]
>
> कौन सा इंजन किसी सुविधा को चलाता है, Didit का अपना या कोई तृतीय-पक्ष प्रदाता, यह नीचे दिए कॉन्फ़िग फ़ील्ड्स में शामिल नहीं है। इसे कंसोल के [Marketplace](https://docs.didit.me/hi/console/marketplace.md) के ज़रिए प्रबंधित किया जाता है, जो आपके लिए सुविधा के `config` ऑब्जेक्ट पर `provider_key` और `fallback_to_native` सेट करता है।

## सत्यापन नियम

* जब `config.documents_allowed` छोड़ा गया हो, `null` हो, या `{}` हो, तो `OCR` डिफ़ॉल्ट रूप से सभी समर्थित देशों और दस्तावेज़ प्रकारों पर चलता है। यदि आप कस्टम `documents_allowed` ऑब्जेक्ट भेजते हैं, तो उसमें कम से कम एक मान्य देश और एक सक्षम दस्तावेज़ प्रकार होना चाहिए। हर दस्तावेज़ कॉन्फ़िग में `sides` को `1` पर सेट किया जा सकता है, जो केवल फ़्रंट कैप्चर के लिए है, या `2` पर, जो फ़्रंट और बैक दोनों के कैप्चर के लिए है।
* `QUESTIONNAIRE` के लिए `config.questionnaire_uuid` आवश्यक है।
* `KYB_DOCUMENTS` के लिए `config.kyb_required_document_groups` आवश्यक है।
* `SIGNATURE` तब तक `signature_level: "qes"` को `qes_not_available` के साथ अस्वीकार करता है जब तक योग्य हस्ताक्षर उपलब्ध न हों। वर्कफ़्लो पर `signature_availability.aes` `false` होने पर वह नए चरण को `signature_level: "aes"` के साथ `aes_not_available` त्रुटि के साथ अस्वीकार करता है। इसके दस्तावेज़ सत्र बनने के समय मौजूद होने चाहिए: जब `signature_documents_source` को `workflow` पर सेट किया गया हो, तो चरण में कंसोल में अपलोड किए गए दस्तावेज़ होने चाहिए, और जिस चरण में कोई दस्तावेज़ न हो, वह ड्राफ़्ट रह सकता है पर लाइव नहीं जा सकता। `session` के साथ, हर create कॉल में `sign.documents` भेजना होगा।
* `FACE_MATCH` सरल वर्कफ़्लो अनुरोधों में `OCR` के बाद आना चाहिए।
* जब `NFC` और `DATABASE_VALIDATION` एक ही वर्कफ़्लो में हों, तो उन्हें `OCR` की आवश्यकता होती है। `AML` से पहले `OCR`, `KYB_REGISTRY`, या `DOCUMENT_AI` में से कोई एक होना चाहिए। यदि उससे पहले केवल `DOCUMENT_AI` है, तो स्क्रीन किया जाने वाला `full_name` भरा जा सकने योग्य होना चाहिए: या तो किसी पहले की Document AI फ़ील्ड से, जो पहले से `full_name` के रूप में चिह्नित है (उसे आपके लिए मैप किया जाता है), या किसी स्पष्ट `config.aml_field_sources` एंट्री से (देखें [AML](#aml))।
* `KYB_DOCUMENTS` और `KYB_KEY_PEOPLE` जैसी KYB उप-सुविधाओं के लिए वर्कफ़्लो में पहले `KYB_REGISTRY` आवश्यक है।
* कोई वर्कफ़्लो या तो व्यक्ति (KYC) वर्कफ़्लो होता है या व्यवसाय (KYB) वर्कफ़्लो, दोनों एक साथ नहीं। जो वर्कफ़्लो किसी भी KYB सुविधा (`KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`) का उपयोग करता है, वह उसे केवल `AML`, `DOCUMENT_AI`, `QUESTIONNAIRE`, `PHONE_VERIFICATION`, `EMAIL_VERIFICATION`, `IP_ANALYSIS`, और `SIGNATURE` के साथ जोड़ सकता है। उसमें `OCR`, `LIVENESS`, `FACE_MATCH`, `NFC`, `PROOF_OF_ADDRESS`, `DATABASE_VALIDATION`, या `AGE_ESTIMATION` जैसी केवल व्यक्ति वाली सुविधाएँ नहीं हो सकतीं, और व्यक्ति वर्कफ़्लो में KYB सुविधाएँ नहीं हो सकतीं। व्यवसाय वर्कफ़्लो पर `DOCUMENT_AI` किसी भी ऐसे फ़ील्ड की तुलना सत्यापित कंपनी से करता है जिस पर `is_full_name` चिह्नित है, न कि किसी व्यक्ति से। किसी कंपनी के पीछे के लोगों को सत्यापित करने के लिए अलग KYC वर्कफ़्लो बनाएँ और `KYB_KEY_PEOPLE` नोड से उसे `kyb_ubo_verification_workflow`, `kyb_officer_verification_workflow`, या `kyb_shareholder_verification_workflow` का उपयोग करके संदर्भित करें।
* क्रिया फ़ील्ड्स `DECLINE`, `REVIEW`, या `NO_ACTION` का उपयोग करते हैं, जब तक नीचे दिए गए फ़ील्ड के लिए इसे प्रतिबंधित न बताया गया हो।
* स्कोर और थ्रेशोल्ड फ़ील्ड्स `0` से `100` तक की संख्याएँ होते हैं, जब तक कोई संकीर्ण सीमा सूचीबद्ध न हो।

## सामान्य स्थिति नियम

हर सुविधा में एक वैकल्पिक `status_rules` ऐरे होता है। जब फ़ील्ड की कोई शर्त मेल खाए, तब इसका उपयोग सुविधा की स्थिति को बदलने के लिए करें।

```json theme={null}
{
  "status_rules": [
    {
      "field": "kyc.issuing_state",
      "operator": "in",
      "value": ["VEN", "IRN"],
      "status": "In Review",
      "value_type": "literal"
    },
    {
      "field": "kyc.extra_fields.profession",
      "operator": "fuzzy_match",
      "value": "Soft. Engineer",
      "score": 80,
      "status": "Declined",
      "value_type": "literal"
    },
    {
      "field": "kyc.extra_fields.dl_class_code_b_to",
      "operator": "less_than",
      "value": "2030-01-01",
      "status": "In Review",
      "value_type": "literal"
    },
    {
      "field": "kyc.extra_fields.dl_class_code_b_from",
      "operator": "less_than",
      "value": { "direction": "past", "amount": 3, "unit": "years" },
      "status": "Declined",
      "value_type": "relative_date"
    }
  ]
}
```

| फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `field` | string | जाँचने के लिए फ़ील्ड पाथ, जैसे `kyc.issuing_state` या `kyc.document_type`। |
| `operator` | string | इनमें से एक: `equals`, `not_equals`, `greater_than`, `greater_than_or_equals`, `less_than`, `less_than_or_equals`, `contains`, `not_contains`, `in`, `not_in`, `is_empty`, `is_not_empty`, `regex`, या `fuzzy_match`। |
| `value` | any | तुलना का मान। जिन ऑपरेटरों को मान की ज़रूरत नहीं है, उनके लिए इसे छोड़ें या `null` भेजें। |
| `status` | string | इनमें से एक: `Approved`, `Declined`, `In Review`, या `No Action`। |
| `value_type` | string | वैकल्पिक। डिफ़ॉल्ट रूप से `literal`। किसी दूसरे फ़ील्ड से तुलना के लिए `field`, रनटाइम पर Didit सूची UUID हल करने के लिए `list`, या किसी तिथि फ़ील्ड की आज से एक अवधि आगे या पीछे की तिथि से तुलना के लिए `relative_date` का उपयोग करें। |
| `score` | number | `fuzzy_match` के लिए आवश्यक। `0` से `100` के बीच न्यूनतम समानता स्कोर। नियम तब मेल खाता है जब गणना की गई समानता इस मान के बराबर या उससे अधिक हो (`similarity >= score`)। उदाहरण के लिए, `Software Engineer`, `Soft. Engineer` से तब मेल खा सकता है जब समानता कम से कम `80` हो। |

ऊपर के उदाहरण को इस तरह पढ़ें: `kyc.extra_fields.profession`, न्यूनतम स्कोर `80` के साथ `Soft. Engineer` से फ़ज़ी मिलान करता है → सुविधा की स्थिति को `Declined` पर सेट करें।

पहचान सत्यापन के लिए, OCR परिणाम से निकाले गए `extra_fields` मानों को लक्ष्य बनाएँ, जैसे `kyc.extra_fields.profession`, ड्राइविंग लाइसेंस क्लास की वैधता की तिथियाँ जैसे `kyc.extra_fields.dl_class_code_b_from` और `kyc.extra_fields.dl_class_code_b_to`, या हर क्लास के लिए प्रतिबंध/सूचना कोड जैसे `kyc.extra_fields.dl_class_code_b_notes` (यूके लाइसेंस का स्तंभ 12)। ये मान OCR परिणाम के `extra_fields` ऑब्जेक्ट से आते हैं; ये `expected_details` का हिस्सा नहीं हैं।

> [!NOTE]
>
> `dl_class_code_*_from` और `dl_class_code_*_to` हमेशा या तो एक वैध ISO तिथि होते हैं या `extra_fields` में अनुपस्थित होते हैं। Didit किसी तिथि फ़ील्ड में कभी भी अपठनीय OCR टेक्स्ट नहीं लौटाता। यदि क्लास तालिका का सेल नहीं पढ़ा जा सकता, तो फ़ील्ड को कच्चे स्ट्रिंग के रूप में भेजने के बजाय छोड़ दिया जाता है। इसलिए अपठनीय क्लास तिथियों को रूट करने के लिए `is_empty` ऑपरेटर का उपयोग करें, यह मानकर न चलें कि फ़ील्ड हमेशा मौजूद रहेगा।

तिथि फ़ील्ड के लिए, `value_type: "relative_date"` का उपयोग करें और मान ऐसे ऑब्जेक्ट के रूप में दें: `{ "direction": "past" | "future", "amount": number, "unit": "days" | "months" | "years" }`। उदाहरण के लिए, `operator: "less_than"` के साथ `{ "direction": "past", "amount": 3, "unit": "years" }` उन तिथियों से मेल खाता है जो आज से तीन साल से पुरानी हैं।

### किसी विशिष्ट चरण से तुलना करें

एक ग्राफ़ वर्कफ़्लो में एक ही सुविधा एक से अधिक बार चल सकती है, जैसे तीन पहचान सत्यापन चरण।
`value_type: "field"` के साथ, किसी एक विशिष्ट चरण से मान पढ़ने के लिए मान के अंत में `@<node_id>` जोड़ें।
जिस नोड का संदर्भ दिया गया है, वह एक सुविधा चरण होना चाहिए जो उस रास्ते पर, जो उस तक पहुँचता है, हर बार नियम वाले चरण से पहले चलता हो, या स्वयं नियम वाला चरण हो।
बिना इस प्रत्यय वाला मान नियम वाले चरण से ही पढ़ा जाता है।

```json theme={null}
{
  "status_rules": [
    {
      "field": "kyc.full_name",
      "operator": "fuzzy_match",
      "value": "kyc.full_name@ocr_1",
      "value_type": "field",
      "score": 80,
      "status": "Declined"
    }
  ]
}
```

इस नियम को, जो तीसरे पहचान सत्यापन चरण पर सेट है, इस तरह पढ़ें: इस चरण का `kyc.full_name`, चरण `ocr_1` द्वारा पढ़े गए पूरे नाम से न्यूनतम स्कोर `80` के साथ फ़ज़ी मिलान करता है → सुविधा की स्थिति को `Declined` पर सेट करें।
कंसोल में, वेरिएबल पिकर हर योग्य चरण को कैनवास पर उसकी संख्या के साथ सूचीबद्ध करता है और प्रत्यय अपने आप सहेज देता है।

## OCR / पहचान सत्यापन

सुविधा मान: `OCR`।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `documents_allowed` | object | वैकल्पिक। इसे छोड़ दें, `null` भेजें, या `{}` भेजें, ताकि हर समर्थित देश और दस्तावेज़ प्रकार की अनुमति मिले। दस्तावेज़ कॉन्फ़िग के साथ ISO3 देश कोड तभी भेजें, जब आप अनुमत दस्तावेज़ों को सीमित करना चाहते हों। कम से कम एक कस्टम दस्तावेज़ में `enabled: 1` होना चाहिए। दस्तावेज़ कॉन्फ़िग में केवल सामने की कैप्चर के लिए `sides: 1`, या सामने और पीछे दोनों की कैप्चर के लिए `sides: 2` शामिल किया जा सकता है। दस्तावेज़ प्रकारों में `P`, `ID`, `DL`, `RP`, `HIC`, `TC`, `SSC` और देश द्वारा समर्थित अन्य मान शामिल हैं। |
| `methods` | object | हर देश में कौन-से तीन [पहचान सत्यापन की विधियाँ](https://docs.didit.me/hi/core-technology/id-verification/verification-methods.md) उपयोग की जा सकती हैं: दस्तावेज़ कैप्चर, सरकारी या अन्य प्रामाणिक स्रोत के विरुद्ध नॉन-डॉक लुकअप, और डिजिटल ID वॉलेट। कुंजी, कोई देश, या किसी देश के भीतर कोई विधि छोड़ने पर वह देश केवल दस्तावेज़ कैप्चर के लिए माना जाता है। हर विधि और वॉलेट को क्षमता कैटलॉग में उस देश के लिए उपलब्ध के रूप में चिह्नित होना चाहिए, अन्यथा सहेजना अस्वीकार कर दिया जाता है। नीचे [प्रति देश विधियाँ](#देश-के-अनुसार-तरीके) देखें। |
| `document_blur_fields_by_country` | object | ISO3 देश कोड से उन फ़ील्ड नामों तक जिन्हें दस्तावेज़ छवियों पर रेडैक्ट करने के लिए धुंधला किया जाना है। |
| `image_capture_methods_allowed` | string\[] | अनुमत कैप्चर विधियाँ। मानों में `CAMERA_SCAN` और `UPLOAD` शामिल हैं। |
| `duplicated_user_action` | action | डुप्लिकेट उपयोगकर्ता के लिए कार्रवाई। |
| `is_age_restrictions_enabled` | boolean | न्यूनतम और अधिकतम आयु जाँच सक्षम करता है। |
| `age_restrictions_by_country` | object | ISO3 देश कोड से एक आयु कॉन्फ़िग तक, जिसमें `minimum_age`, वैकल्पिक `maximum_age`, और वैकल्पिक `states` होते हैं। |
| `minimum_age` | integer | वैश्विक न्यूनतम आयु, `1` से `120` तक। |
| `minimum_age_action` | action | जब उपयोगकर्ता `minimum_age` से कम हो, तब की कार्रवाई। |
| `maximum_age` | integer | वैश्विक अधिकतम आयु, `1` से `120` तक। |
| `maximum_age_action` | action | जब उपयोगकर्ता `maximum_age` से अधिक हो, तब की कार्रवाई। |
| `expiration_date_not_detected_action` | action | जब दस्तावेज़ की समाप्ति तिथि न मिले, तब की कार्रवाई। |
| `invalid_code_action` | action | जब बारकोड या मशीन-पठनीय कोड अमान्य हो, तब की कार्रवाई। |
| `invalid_mrz_action` | action | जब MRZ अमान्य हो, तब की कार्रवाई। |
| `inconsistent_data_action` | action | जब निकाले गए दस्तावेज़ फ़ील्ड आपस में मेल न खाएँ, तब की कार्रवाई। |
| `invalid_validation_action` | action | जब दस्तावेज़ सत्यापन विफल हो, तब की कार्रवाई। |
| `expected_details_mismatch_action` | action | जब अपेक्षित उपयोगकर्ता विवरण दस्तावेज़ से मेल न खाएँ, तब की कार्रवाई। |
| `image_too_blurry_action` | action | धुंधली दस्तावेज़ छवियों के लिए कार्रवाई। |
| `image_too_dark_action` | action | अंधेरी दस्तावेज़ छवियों के लिए कार्रवाई। |
| `image_too_bright_action` | action | ओवरएक्सपोज़्ड दस्तावेज़ छवियों के लिए कार्रवाई। |
| `unparsed_address_action` | action | जब दस्तावेज़ का पता पार्स न हो सके, तब की कार्रवाई। |
| `address_validation_enabled` | boolean | यह इस चरण द्वारा पढ़े गए पते (जो पहचान दस्तावेज़ पर छपा है) को पोस्टल संदर्भ डेटा के विरुद्ध सत्यापित करता है: यह पुष्टि करता है कि पता मौजूद है और उसे मानकीकृत करता है, और इसे कभी किसी व्यक्ति से नहीं जोड़ता। परिणाम निर्णय में चरण का `address_validation` ऑब्जेक्ट होता है। **हर सत्यापित पते पर \$0.10 शुल्क**; जो सत्यापन चल नहीं सका (`unavailable`), वह निःशुल्क है। डिफ़ॉल्ट रूप से बंद। |
| `address_not_verified_action` | action | जब Address Validation पते की इमारत-स्तर तक पुष्टि न कर सके (`ADDRESS_NOT_VERIFIED`: `partially_verified` या `not_verified`), तब की कार्रवाई। यह केवल तब लागू होता है जब `address_validation_enabled` चालू हो। डिफ़ॉल्ट `NO_ACTION` है, जो केवल चेतावनी दर्ज करता है। |
| `document_or_personal_number_format_mismatch_action` | action | जब दस्तावेज़ या व्यक्तिगत संख्या का प्रारूप अपेक्षित पैटर्न से मेल न खाए, तब की कार्रवाई। |
| `critical_field_occlusion_action` | action | जब ओक्लूज़न जाँच यह बताए कि कैप्चर किए गए दस्तावेज़ पर कोई महत्वपूर्ण मुद्रित फ़ील्ड - कोई पहचान संख्या, नाम, जन्म तिथि या समाप्ति तिथि - भौतिक रूप से ढकी हुई थी, तब की कार्रवाई। पहचान संख्या को ढकना कैप्चर गुणवत्ता का नहीं, बल्कि छेड़छाड़ का संकेत है, इसलिए यह डिफ़ॉल्ट रूप से `REVIEW` है; ढके हुए फ़ील्ड का पढ़ा गया मान दोनों स्थितियों में एक्सट्रैक्शन से हटा दिया जाता है। जहाँ रेडैक्ट किया गया दस्तावेज़ कभी समीक्षक तक नहीं पहुँचना चाहिए, वहाँ इसे `DECLINE` तक बढ़ाएँ। |
| `document_without_portrait_action` | action | जब पहचाने गए दस्तावेज़ प्रकार में किसी भी ओर पोर्ट्रेट फ़ोटो कभी नहीं होता (कुछ निवास परमिट, स्वास्थ्य कार्ड, पंजीकरण प्रमाणपत्र, और कैटलॉग में ज्ञात अन्य बिना-पोर्ट्रेट दस्तावेज़ परिवार), तब की कार्रवाई। डिफ़ॉल्ट `REVIEW` है। जब चेहरा मिलान वर्कफ़्लो की पहचान जाँच का आधार हो, तब `DECLINE` पर विचार करें। |
| `is_document_selfie_portrait_match_enabled` | boolean | दस्तावेज़ पोर्ट्रेट और सेल्फ़ी की तुलना सक्षम करता है। |
| `document_selfie_portrait_match_decline_threshold` | integer | दस्तावेज़ पोर्ट्रेट से सेल्फ़ी मिलान के लिए अस्वीकृति थ्रेशोल्ड। |
| `document_selfie_portrait_match_review_threshold` | integer | दस्तावेज़ पोर्ट्रेट से सेल्फ़ी मिलान के लिए समीक्षा थ्रेशोल्ड। |
| `document_selfie_face_search_enabled` | boolean | दस्तावेज़ कैप्चर के दौरान लिए गए सेल्फ़ी पर [चेहरा खोज 1:N](https://docs.didit.me/hi/core-technology/face-search/overview.md#दस्तावेज़-कैप्चर-के-दौरान-ली-गई-सेल्फ़ी) चलाता है (`is_document_selfie_portrait_match_enabled` की आवश्यकता है): उसका मिलान चेहरा ब्लॉकलिस्ट और पहले सत्यापित उपयोगकर्ताओं से करता है। सेल्फ़ी केवल तुलना की जाती है, उसका टेम्पलेट कभी संग्रहीत नहीं होता। डिफ़ॉल्ट रूप से चालू। `false` खोज को छोड़ देता है, और दस्तावेज़-सेल्फ़ी की डुप्लिकेट-चेहरा कार्रवाइयों के पास करने को कुछ नहीं बचता; लाइवनेस चरण पर `face_search_enabled: false` भी इसे छोड़ देता है, क्योंकि यह ऑप्ट-आउट सत्र की हर सेल्फ़ी पर लागू होता है। |
| `document_selfie_duplicated_face_action` | action | निर्णय, जब दस्तावेज़ कैप्चर की सेल्फ़ी इस एप्लिकेशन में पहले से सत्यापित किसी उपयोगकर्ता के चेहरे से मेल खाए, या मेल खा सकती हो। डिफ़ॉल्ट `NO_ACTION` है। |
| `document_selfie_duplicated_face_name_mismatch_action` | action | निर्णय, जब दस्तावेज़ कैप्चर की सेल्फ़ी किसी ऐसे उपयोगकर्ता से मेल खाए जो किसी अलग नाम से पहले सत्यापित हो चुका है। यह केवल `document_selfie_duplicated_face_action` को बढ़ा सकता है। डिफ़ॉल्ट `REVIEW` है। |
| `document_selfie_duplicated_face_document_mismatch_action` | action | निर्णय, जब दस्तावेज़ कैप्चर की सेल्फ़ी किसी ऐसे उपयोगकर्ता से मेल खाए जो अपने पहचान दस्तावेज़ पर अलग जन्म तिथि के साथ पहले से सत्यापित हो चुका है। अलग या नवीनीकृत दस्तावेज़ पर वही व्यक्ति चिह्नित नहीं किया जाता। यह केवल `document_selfie_duplicated_face_action` को बढ़ा सकता है। डिफ़ॉल्ट `REVIEW` है। |
| `id_verification_name_match_score_threshold` | integer | एक से अधिक पहचान सत्यापनों में नाम मिलान का थ्रेशोल्ड। |
| `id_verification_max_retry_attempts` | integer | पहचान सत्यापन के लिए पुनः प्रयास की सीमा, `2` से `5` तक। |
| `id_document_quality_threshold` | integer | न्यूनतम कैप्चर-गुणवत्ता स्कोर (`0` से `100` तक) जिसे दस्तावेज़ की छवि को स्वीकार होने के लिए पहुँचना होगा। गुणवत्ता जाँच हमेशा चलती है; केवल यह थ्रेशोल्ड कॉन्फ़िगर किया जा सकता है। डिफ़ॉल्ट मान `20` है, जो इस तरह सेट किया गया है कि धुंधले और सीमारेखा पर के कैप्चर (ब्लर, मोशन, अपठनीय टेक्स्ट) अस्वीकार हों जबकि पठनीय दस्तावेज़ पास हों; सख़्त कैप्चर आवश्यकताओं के लिए इसे बढ़ाएँ। कंसोल इस मान को एक धारणा-आधारित स्लाइडर पर दिखाता है, जहाँ डिफ़ॉल्ट मान `20` संतुलित 50% के रूप में दिखता है। |
| `cross_org_fraud_document_action` | action | नेटवर्क में किसी अन्य संगठन द्वारा इस दस्तावेज़ को धोखाधड़ी के रूप में चिह्नित किए जाने पर निर्णय। |
| `document_audio_recording_enabled` | boolean | दस्तावेज़ कैप्चर के दौरान माइक्रोफ़ोन रिकॉर्ड करें, ताकि समीक्षक सत्र को सुन सके। डिफ़ॉल्ट रूप से बंद रहता है। |
| `document_liveness_portrait_replace_decline_threshold` | integer | पोर्ट्रेट प्रतिस्थापन स्कोर (`0` से `100` तक, जितना अधिक उतनी अधिक संभावना कि वास्तविक हो) जिस मान से नीचे हो, उस पर सत्र अस्वीकृत कर दिया जाता है। डिफ़ॉल्ट मान `35` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `document_liveness_portrait_replace_review_threshold` | integer | पोर्ट्रेट प्रतिस्थापन स्कोर जिस मान से नीचे हो, उस पर सत्र समीक्षाधीन हो जाता है, बशर्ते वह पहले से अस्वीकृत न हो। `100` पर लगभग हर सत्र रोका जाता है। डिफ़ॉल्ट मान `70` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `document_liveness_printed_copy_decline_threshold` | integer | प्रिंटेड कॉपी स्कोर (`0` से `100` तक, जितना अधिक उतनी अधिक संभावना कि वास्तविक हो) जिस मान से नीचे हो, उस पर सत्र अस्वीकृत कर दिया जाता है। डिफ़ॉल्ट मान `35` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `document_liveness_printed_copy_review_threshold` | integer | प्रिंटेड कॉपी स्कोर जिस मान से नीचे हो, उस पर सत्र समीक्षाधीन हो जाता है, बशर्ते वह पहले से अस्वीकृत न हो। `100` पर लगभग हर सत्र रोका जाता है। डिफ़ॉल्ट मान `77` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `document_liveness_screen_replay_decline_threshold` | integer | स्क्रीन कैप्चर स्कोर (`0` से `100` तक, जितना अधिक उतनी अधिक संभावना कि वास्तविक हो) जिस मान से नीचे हो, उस पर सत्र अस्वीकृत कर दिया जाता है। डिफ़ॉल्ट मान `30` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `document_liveness_screen_replay_review_threshold` | integer | स्क्रीन कैप्चर स्कोर जिस मान से नीचे हो, उस पर सत्र समीक्षाधीन हो जाता है, बशर्ते वह पहले से अस्वीकृत न हो। `100` पर लगभग हर सत्र रोका जाता है। डिफ़ॉल्ट मान `70` है। देखें [दस्तावेज़ लाइवनेस थ्रेशोल्ड](https://docs.didit.me/hi/core-technology/id-verification/warnings-id-verification.md#दस्तावेज़-लाइवनेस-थ्रेशोल्ड-कॉन्फ़िगर-करना)। |
| `id_verification_injection_attack_action` | action | जब दस्तावेज़, या ID लुकअप के लिए लिया गया सेल्फ़ी, डिवाइस के अपने कैमरे से कैप्चर होने के बजाय इंजेक्ट किया गया हो (`INJECTION_ATTACK_DETECTED`), तब का निर्णय: सॉफ़्टवेयर वर्चुअल कैमरा, पेज या ब्राउज़र ऑटोमेशन द्वारा बनाया गया कैमरा फ़ीड, हुक किया गया कैमरा, या ऐप से जुड़ा कोई इंस्ट्रूमेंटेशन टूल। मान: `DECLINE`, `REVIEW`, `NO_ACTION`। डिफ़ॉल्ट मान `DECLINE` है। वे संकेत जो कोई वास्तविक व्यक्ति भी उत्पन्न कर सकता है, इसे कभी नहीं बढ़ाते। लाइवनेस और चेहरा मिलान पर जोखिम इसके बजाय `frame_injection_action` का अनुसरण करता है। |
| `image_quality_too_low_action` | action | समग्र दस्तावेज़ छवि गुणवत्ता तय मानक से नीचे होने पर लिया जाने वाला निर्णय। |
| `is_image_capture_review_screen_enabled` | boolean | हर दस्तावेज़ कैप्चर के बाद उपयोगकर्ता को एक समीक्षा स्क्रीन दिखाएँ, जिससे वह जमा करने से पहले फ़ोटो दोबारा ले सके। डिफ़ॉल्ट रूप से बंद रहता है। |
| `is_ocr_id_verification_data_review_enabled` | boolean | उपयोगकर्ता को चरण पूरा होने से पहले निकाले गए पहचान डेटा की समीक्षा और सुधार करने दें। डिफ़ॉल्ट रूप से बंद रहता है। सुधार की तुलना `ocr_id_verification_data_review_critical_fields` से की जाती है, और असहमति होने पर उसी के अनुसार महत्त्वपूर्ण या गौण कार्रवाई ली जाती है। यदि वर्कफ़्लो में NFC शामिल है तो समीक्षा फिर भी चलती है - बाद में चिप रीड बस उसे प्रतिस्थापित कर देता है। |
| `ocr_id_verification_data_review_critical_fields` | string\[] | OCR परिणाम संपादित करते समय किन निकाले गए पहचान फ़ील्ड को महत्त्वपूर्ण माना जाए, ताकि बेमेल होने पर गौण के बजाय महत्त्वपूर्ण कार्रवाई हो। आकार: `["first_name" \| "last_name" \| "date_of_birth" \| ...]`। |
| `ocr_id_verification_data_review_critical_mismatch_action` | restricted action | जब उपयोगकर्ता का संपादन किसी महत्त्वपूर्ण फ़ील्ड पर OCR से असहमत हो, तब लिया जाने वाला निर्णय। |
| `ocr_id_verification_data_review_minor_mismatch_action` | action | जब उपयोगकर्ता का संपादन किसी गैर-महत्त्वपूर्ण फ़ील्ड पर OCR से असहमत हो, तब लिया जाने वाला निर्णय। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। |

> [!NOTE]
>
> दस्तावेज़ लाइवनेस को ऊपर दिए गए छह `document_liveness_*` थ्रेशोल्ड से कॉन्फ़िगर किया जाता है, प्रति-सिग्नल कार्रवाई फ़ील्ड से नहीं। `portrait_replacement_action`, `printed_copy_action` और `screen_capture_action` खाता-स्तर की सेटिंग्स हैं और वर्कफ़्लो फ़ीचर कॉन्फ़िग में **स्वीकार नहीं** किए जाते: API सेव करते समय अज्ञात कॉन्फ़िग कुंजियाँ हटा देता है, इसलिए वहाँ भेजने का कोई प्रभाव नहीं होता। प्रत्येक सिग्नल के लिए `0`-`100` पैमाने पर अस्वीकृति थ्रेशोल्ड और समीक्षा थ्रेशोल्ड होते हैं, जहाँ अधिक स्कोर का अर्थ है कि दस्तावेज़ के वास्तविक होने की संभावना अधिक है।

उदाहरण:

```json theme={null}
{
  "feature": "OCR",
  "config": {
    "documents_allowed": {
      "USA": {
        "DL": {
          "enabled": 1,
          "sides": 2
        }
      }
    },
    "duplicated_user_action": "REVIEW",
    "image_capture_methods_allowed": ["CAMERA_SCAN", "UPLOAD"]
  }
}
```

### देश के अनुसार तरीके

`methods` को [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) देश कोड द्वारा कुंजीबद्ध किया जाता है। हर देश में अधिकतम तीन विधि ऑब्जेक्ट हो सकते हैं; जो छोड़ दिया जाए, उसके लिए डिफ़ॉल्ट लागू होता है।

```json theme={null}
{
  "feature": "OCR",
  "config": {
    "methods": {
      "ZAF": {
        "document": { "enabled": true },
        "id_lookup": {
          "enabled": true,
          "max_attempts": 2,
          "skip_liveness_and_face_match": true,
          "on_partial_match": "fallback_to_document",
          "on_no_match": "fallback_to_document",
          "on_provider_error": "fallback_to_document"
        },
        "wallet": { "enabled": false, "providers": [], "on_failure": "fallback_to_document" }
      },
      "DNK": {
        "document": { "enabled": true },
        "id_lookup": { "enabled": true, "on_no_match": "decline" }
      }
    }
  }
}
```

`wallet.on_failure` `fallback_to_document`, `decline` या `retry` में से एक होता है। `retry` (केवल वॉलेट के लिए, जब उस देश में दस्तावेज़ कैप्चर बंद हो) उस उपयोगकर्ता को, जिसका वॉलेट चरण पर साइन-इन पूरा नहीं हुआ, फिर से प्रयास करने देता है; इसके लिए सत्र कभी अस्वीकृत नहीं होता और तब तक खुला रहता है जब तक वे पूरा न करें या उसकी समय-सीमा समाप्त न हो जाए। id\_lookup के स्विच केवल `fallback_to_document` या `decline` स्वीकार करते हैं।

दस्तावेज़ों को पहली स्क्रीन से बाहर रखने और उन्हें केवल तब देने के लिए जब वॉलेट या लुकअप सफल न हो, `document.fallback_only` सेट करें। उदाहरण में फ़िनलैंड है, जहाँ Finnish Trust Network पहले आता है और दस्तावेज़ कैप्चर फ़ॉलबैक होता है। फ़िनलैंड के लिए `documents_allowed` में उसके दस्तावेज़ प्रकार भी सक्षम होने चाहिए (जैसे पासपोर्ट और ID कार्ड), ताकि फ़ॉलबैक के पास देने के लिए दस्तावेज़ हों।

```json theme={null}
{
  "FIN": {
    "document": { "enabled": true, "fallback_only": true },
    "wallet": { "enabled": true, "providers": ["ftn"], "on_failure": "fallback_to_document" }
  }
}
```

ऊपर के दोनों लुकअप आज के कैटलॉग में `available` हैं, इसलिए वह कॉन्फ़िग जैसा लिखा है वैसे ही सेव होता है। वॉलेट ब्लॉक को इस उदाहरण से जानबूझकर बाहर रखा गया है: वॉलेट केवल उसी देश में सेव होता है जहाँ कैटलॉग उसे `available` चिह्नित करता है, और किसी भी अन्य देश में `wallet.enabled: true` को अस्वीकार कर दिया जाता है, और lookup कॉन्फ़िगरेशन सहित पूरा सेव विफल हो जाता है। जहाँ कैटलॉग वॉलेट को `available` चिह्नित करता है, वहाँ उस देश में उसे जोड़ें:

```json theme={null}
{
  "DNK": {
    "document": { "enabled": true },
    "wallet": { "enabled": true, "providers": ["mitid"], "on_failure": "fallback_to_document" }
  }
}
```

| कुंजी | प्रकार | डिफ़ॉल्ट | विवरण |
| - | - | - | - |
| `<ISO3>.document.enabled` | boolean | `true` | इस देश में फ़ोटो खींचे गए दस्तावेज़ को स्वीकार किया जाता है या नहीं। कौन से दस्तावेज़ स्वीकार होंगे, यह सूची `documents_allowed` में ही रहती है। |
| `<ISO3>.document.fallback_only` | boolean | `false` | दस्तावेज़ कैप्चर चालू रहता है, लेकिन पहली स्क्रीन पर इसकी पेशकश नहीं की जाती। उपयोगकर्ता पहले देश के वॉलेट या ID लुकअप से शुरू करते हैं, और केवल वे उपयोगकर्ता दस्तावेज़ कैप्चर पर भेजे जाते हैं जिनका वॉलेट साइन-इन विफल हो, रद्द हो या टाइमआउट हो जाए, या जिनका लुकअप मेल न खाए (जब `on_failure`, `on_partial_match`, `on_no_match` और `on_provider_error` स्विच `fallback_to_document` पर सेट हों)। केवल एक वॉलेट होने पर उपयोगकर्ता सीधे उसी वॉलेट पर पहुँचता है। उसके बिना, वॉलेट या लुकअप को दस्तावेज़ कैप्चर के साथ-साथ दिखाया जाता है। यह तभी स्वीकार होता है जब `document.enabled` `true` हो और देश में कम से कम एक वॉलेट या ID लुकअप दस्तावेज़ कैप्चर पर फ़ॉलबैक करता हो; अन्यथा HTTP 400 के साथ अस्वीकार किया जाता है। |
| `<ISO3>.id_lookup.enabled` | boolean | `false` | इस देश के सरकारी या अन्य अधिकृत स्रोत के विरुद्ध गैर-दस्तावेज़ लुकअप की पेशकश करें। जब कैटलॉग में देश का स्रोत `available` चिह्नित न हो, तब यह अस्वीकार होता है। |
| `<ISO3>.id_lookup.max_attempts` | integer | `1` | `1` से `5`। फ़ॉलबैक स्विच चालू होने से पहले उपयोगकर्ता को ऐसे कितने लुकअप मिल सकते हैं जिनका **उत्तर मिला** हो। जो संख्या क्लाइंट-साइड फ़ॉर्मैट जाँच में विफल होती है, वह रजिस्टर तक नहीं पहुँचती, इसलिए न उसकी गिनती होती है और न बिलिंग। |
| `<ISO3>.id_lookup.skip_liveness_and_face_match` | boolean | `true` | ऐसे रजिस्टर से मिलान के बाद जो पोर्ट्रेट लौटाता है, वर्कफ़्लो के अपने लाइवनेस डिटेक्शन और चेहरा मिलान चरण छोड़ दिए जाते हैं। लुकअप पहले ही सेल्फ़ी पर पैसिव लाइवनेस चला चुका होता है और उसे उस पोर्ट्रेट से मिला चुका होता है। जो स्रोत कोई पोर्ट्रेट नहीं लौटाता, उसके लिए इसे सेव करते समय `false` पर सामान्यीकृत किया जाता है, क्योंकि वहाँ यह स्विच बेमानी होगा। |
| `<ISO3>.id_lookup.on_partial_match` | `fallback_to_document` \| `decline` | `fallback_to_document` | जब रजिस्टर ने उत्तर दिया, लेकिन कुछ फ़ील्ड मेल नहीं खाए, तब क्या होता है। |
| `<ISO3>.id_lookup.on_no_match` | `fallback_to_document` \| `decline` | `fallback_to_document` | जब रजिस्टर ने उत्तर दिया और उसमें कोई मेल खाता रिकॉर्ड नहीं है, तब क्या होता है। |
| `<ISO3>.id_lookup.on_provider_error` | `fallback_to_document` \| `decline` | `fallback_to_document` | जब रजिस्टर तक पहुँचा नहीं जा सका, तब क्या होता है। इसकी कभी बिलिंग नहीं होती। |
| `<ISO3>.id_lookup.response_fields` | string\[] \| null | `null` | स्रोत की रिस्पॉन्स फ़ील्ड कुंजियों का वैकल्पिक उपसमूह। अज्ञात कुंजियाँ अस्वीकार होती हैं, और स्रोत की आवश्यक फ़ील्ड हमेशा वापस जोड़ दी जाती हैं, इसलिए सेव किया गया मान हमेशा एक मान्य चयन होता है। वर्तमान स्टेजिंग कार्यान्वयन यह चयन तुलना आउटपुट, वैकल्पिक जेंडर और सुरक्षित रखे गए रजिस्ट्री पोर्ट्रेट पर लागू करता है। आवश्यक पहचान फ़ील्ड बने रहते हैं। रोलआउट और रिटेंशन नोट नीचे देखें। |
| `<ISO3>.wallet.enabled` | boolean | `false` | इस देश में डिजिटल ID वॉलेट से साइन-इन की पेशकश करें। |
| `<ISO3>.wallet.providers` | string\[] | `[]` | कैटलॉग के वे वॉलेट ID जिन्हें यह देश स्वीकार करता है। यह केवल एक स्वीकृति सूची है, रैंकिंग नहीं। आप जो क्रम भेजते हैं, वह कैटलॉग के क्रम में सामान्यीकृत हो जाता है। `enabled` के `true` होने पर कम से कम एक वॉलेट आवश्यक है। जो वॉलेट देश में पेश नहीं किया जाता, या जो अभी उपलब्ध नहीं है और जल्द आने वाला है, वह अस्वीकार होता है। |
| `<ISO3>.wallet.on_failure` | `fallback_to_document` \| `decline` \| `retry` | `fallback_to_document` | जब साइन-इन रद्द हो, टाइमआउट हो या विफल हो, तब क्या होता है। `retry` उपयोगकर्ता को वॉलेट चरण पर रखता है ताकि वह फिर से प्रयास कर सके (केवल वॉलेट के लिए); इसे `document.fallback_only` के साथ अस्वीकार किया जाता है। |

सेव करते समय API जो सत्यापन लागू करता है:

* अज्ञात देश कोड, किसी देश के भीतर अज्ञात कुंजी, या किसी विधि के भीतर अज्ञात कुंजी अस्वीकार होती है। कुछ भी चुपचाप नहीं हटाया जाता।
* ऐसा देश जहाँ कोई विधि चालू न हो, अस्वीकार होता है: वहाँ कोई भी व्यक्ति सत्यापन नहीं कर सकता।
* कोई वॉलेट या लुकअप केवल तभी दस्तावेज़ कैप्चर पर फ़ॉलबैक कर सकता है जब उस देश के लिए दस्तावेज़ कैप्चर चालू हो। जिस देश में `document.enabled` `false` है, वहाँ `fallback_to_document` रनटाइम पर अस्वीकार होता है, क्योंकि फ़ॉलबैक के लिए कोई जगह नहीं है।
* `document.fallback_only: true` HTTP 400 के साथ अस्वीकार होता है, जब तक `document.enabled` `true` न हो और उस देश में कम से कम एक वॉलेट या ID लुकअप दस्तावेज़ कैप्चर पर फ़ॉलबैक न करता हो।

> [!WARNING]
>
> वर्तमान स्टेजिंग कार्यान्वयन `id_lookup.response_fields` को तुलना आउटपुट, वैकल्पिक जेंडर और सुरक्षित रखे गए रजिस्ट्री पोर्ट्रेट पर लागू करता है। आवश्यक पहचान फ़ील्ड सत्यापन रिकॉर्ड का हिस्सा बने रहते हैं। यह इसकी गारंटी नहीं है कि हर मध्यवर्ती प्रोवाइडर पेलोड प्रोसेसिंग से बाहर रखा जाता है। इस बदलाव के लिए प्रोडक्शन रोलआउट की पुष्टि नहीं हुई है। रिटेंशन आवश्यकताओं के लिए फ़ील्ड चयन पर भरोसा करने से पहले अपने लक्ष्य एनवायरनमेंट में व्यवहार की पुष्टि करें।

`methods` लिखने से पहले क्षमता कैटलॉग पढ़ें, या तो कंसोल के **देश** टैब के माध्यम से, या [`didit_workflow_get_id_verification_methods_catalog`](https://docs.didit.me/hi/integration/mcp/tools) MCP टूल से। व्यवहार, कवरेज और बिलिंग के बारे में जानकारी [पहचान सत्यापन विधियाँ](https://docs.didit.me/hi/core-technology/id-verification/verification-methods.md) पर है।

## NFC / ई-पासपोर्ट

सुविधा मान: `NFC`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `allow_nfc_skip` | बूलियन | जब दस्तावेज़ चिप पढ़ने को सपोर्ट करता है, तब उपयोगकर्ताओं को NFC छोड़ने की अनुमति देता है। |
| `skip_nfc_action` | कार्रवाई | जब उपयोगकर्ता NFC छोड़ता है, तब की जाने वाली कार्रवाई। |
| `unverified_chip_action` | कार्रवाई | जब चिप सत्यापन विफल होता है, तब की जाने वाली कार्रवाई। |
| `trust_anchor_missing_action` | कार्रवाई | वह निर्णय जब चिप के डेटा-ग्रुप हैश अखंड हों, पर प्रमाणपत्र श्रृंखला सत्यापित न हो सके, क्योंकि जारी करने वाले देश का CSCA trust anchor लोड नहीं है। |
| `jpki_request_attributes` | बूलियन | जापान My Number Card ([JPKI](https://docs.didit.me/hi/core-technology/nfc-verification/overview.md#japan-my-number-card-jpki), केवल नेटिव SDK): हस्ताक्षर प्रमाणपत्र भी पढ़ता है, जिसके लिए कार्ड का हस्ताक्षर PIN चाहिए और इसमें धारक का नाम, जन्म तिथि, लिंग और पता होता है, जिनकी तुलना पहचान सत्यापन डेटा से की जाती है। डिफ़ॉल्ट `true`। `false` केवल उपयोगकर्ता प्रमाणीकरण प्रमाणपत्र (4 अंकों का PIN) पढ़ता है, जो कार्ड और PIN को प्रमाणित करता है, पर इसमें धारक का कोई डेटा नहीं होता। |
| `jpki_certificate_invalid_action` | कार्रवाई | वह निर्णय जब My Number Card का प्रमाणपत्र JPKI प्रमाणन प्राधिकरण तक श्रृंखलाबद्ध न हो, उसकी वैधता अवधि से बाहर हो, या अनुरोधित प्रकार का कार्ड प्रमाणपत्र न हो (`JPKI_CERTIFICATE_INVALID`)। डिफ़ॉल्ट `DECLINE`। |
| `jpki_signature_invalid_action` | कार्रवाई | वह निर्णय जब वन-टाइम चैलेंज पर My Number Card का हस्ताक्षर सत्यापित न हो, जिससे कार्ड का होना और उसके PIN की जानकारी प्रमाणित नहीं होती (`JPKI_SIGNATURE_INVALID`)। डिफ़ॉल्ट `DECLINE`। |
| `jpki_certificate_revoked_action` | कार्रवाई | वह निर्णय जब निरस्तीकरण जाँच में My Number Card का प्रमाणपत्र निरस्त पाया जाए (`JPKI_CERTIFICATE_REVOKED`)। डिफ़ॉल्ट `DECLINE`। |
| `jpki_revocation_unchecked_action` | कार्रवाई | वह निर्णय जब My Number Card सत्यापित हो गया हो, पर निरस्तीकरण का कोई उत्तर उपलब्ध न हो, इसलिए कार्ड के निरस्त होने को खारिज नहीं किया जा सकता (`JPKI_REVOCATION_UNCHECKED`)। डिफ़ॉल्ट `REVIEW`। |
| `jpki_inconsistent_data_action` | कार्रवाई | वह निर्णय जब My Number Card के हस्ताक्षर प्रमाणपत्र में दिए नाम, जन्म तिथि, लिंग या पते का मान उसी कार्ड के पहचान सत्यापन डेटा से भिन्न हो (`JPKI_AND_OCR_DATA_NOT_SAME`)। डिफ़ॉल्ट `REVIEW`। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

## लाइवनेस

सुविधा मान: `LIVENESS`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `face_liveness_method` | string | `ACTIVE_3D`, `FLASHING`, या `PASSIVE` में से एक। |
| `face_liveness_mode` | string | लाइवनेस मोड का ओवरराइड। |
| `face_liveness_flash_mode` | string | `ACTIVE_3D` और `FLASHING` तरीकों के लिए फ़्लैश मोड। `"0"` (सख़्त नहीं, डिफ़ॉल्ट) सत्यापित करता है कि स्क्रीन पर फ़्लैश किए गए रंग उपयोगकर्ता के चेहरे पर परावर्तित होते हैं; `"1"` (सख़्त) इसके अलावा यह भी माँगता है कि परावर्तन फ़्लैश किए गए रंगों के ठीक उसी क्रम से मेल खाएँ। यह रीप्ले और वीडियो इंजेक्शन हमलों के विरुद्ध अधिक मज़बूत है, लेकिन इससे गलत अस्वीकृतियाँ अधिक होती हैं। |
| `face_liveness_score_decline_threshold` | integer | अस्वीकृति थ्रेशोल्ड। |
| `face_liveness_score_review_threshold` | integer | समीक्षा थ्रेशोल्ड। |
| `face_liveness_possible_duplicated_face_action` | action | जब चेहरा डुप्लिकेट हो सकता है तब की कार्रवाई। |
| `face_liveness_multiple_faces_action` | action | जब एक से अधिक चेहरे पहचाने जाते हैं तब की कार्रवाई। |
| `face_liveness_video_anomaly_action` | action | जब संग्रहीत रिकॉर्डिंग में दोहराया गया गतिशील क्रम हो तब की कार्रवाई। डिफ़ॉल्ट `NO_ACTION` है; `REVIEW` और `DECLINE` किसी तय हो चुके सत्यापन को अतुल्यकालिक रूप से एस्केलेट कर सकते हैं। केवल विरल या दोहराए गए स्थिर फ़्रेम इसे ट्रिगर नहीं करते। |
| `face_liveness_attack_face_match_action` | action | जब लाइवनेस चेहरा इस एप्लिकेशन के किसी पिछले सत्र के ऐसे दूसरे उपयोगकर्ता के चेहरे से मेल खाता है जिसके कैप्चर को उच्च विश्वास के साथ लाइवनेस हमला माना गया था (चेतावनी `FACE_MATCHES_LIVENESS_ATTACK`) तब की कार्रवाई। `NO_ACTION` या `REVIEW` स्वीकार्य हैं; `DECLINE` स्वीकार्य है, लेकिन इसे `REVIEW` की तरह लागू किया जाता है, क्योंकि एक वास्तविक उपयोगकर्ता गलती से एक बार अस्वीकृत होकर फिर पास हो सकता है। डिफ़ॉल्ट `NO_ACTION` है। |
| `race_map_similarity_thresholds` | object | जनसांख्यिकी के अनुसार समानता थ्रेशोल्ड। |
| `face_privacy_mode_enabled` | boolean | चेहरे की संपत्तियों के लिए गोपनीयता मोड सक्षम करता है। |
| `face_quality_review_threshold` | integer | चेहरे की इमेज गुणवत्ता के लिए समीक्षा थ्रेशोल्ड। |
| `face_quality_decline_threshold` | integer | चेहरे की इमेज गुणवत्ता के लिए अस्वीकृति थ्रेशोल्ड। समीक्षा थ्रेशोल्ड से कम या उसके बराबर होना चाहिए। |
| `face_luminance_min_threshold` | integer | न्यूनतम ल्यूमिनेंस थ्रेशोल्ड। `face_luminance_max_threshold` से कम होना चाहिए। |
| `face_luminance_min_action` | action | ल्यूमिनेंस बहुत कम होने पर की कार्रवाई। |
| `face_luminance_max_threshold` | integer | अधिकतम ल्यूमिनेंस थ्रेशोल्ड। |
| `face_luminance_max_action` | action | ल्यूमिनेंस बहुत अधिक होने पर की कार्रवाई। |
| `face_liveness_max_attempts` | integer | प्रति सत्र कुल लाइवनेस सबमिशन, `1` से `3` तक। डिफ़ॉल्ट `3` का अर्थ है एक प्रारंभिक प्रयास और दो पुनः प्रयास। `1` सेट करने से कैप्चर-गुणवत्ता विफलताओं के लिए पुनः प्रयास बंद नहीं होते: जब किसी प्रयास की हर चेतावनी पर्यावरण से जुड़ी हो (`LOW_FACE_LUMINANCE`, `HIGH_FACE_LUMINANCE`, `LOW_FACE_QUALITY`, `HIGH_FACE_OCCLUSION`, `NO_FACE_DETECTED`), तो उपयोगकर्ता को हमेशा उपयोगी फ़ीडबैक के साथ दूसरा प्रयास मिलता है। |
| `cross_org_fraud_face_action` | action | **अप्रचलित और अब लागू नहीं।** यह चेहरे को ऐसा मानता था जैसे उस पर धोखाधड़ी का निर्णय लागू हो, जिसे एक स्थिर बायोमेट्रिक पहचान धारण नहीं कर सकती। यह अब भी स्वीकार किया जाता है, ताकि मौजूदा वर्कफ़्लो सत्यापित होते रहें। इसके बजाय `cross_org_identity_claim_pattern_action` का उपयोग करें। |
| `cross_org_identity_claim_pattern_action` | action | नेटवर्क के अन्य संगठनों ने इसी व्यक्ति के लिए पहचान-दावे की ऐसी घटनाएँ दर्ज की हैं जिनमें दावा की गई पहचान मेल नहीं खाई, तब का निर्णय। केवल समीक्षा या कोई कार्रवाई नहीं। यहाँ सेट किया गया अस्वीकार समीक्षा में बदल दिया जाता है। देखें [संगठनों के बीच पहचान दावे](https://docs.didit.me/hi/core-technology/liveness/cross-organization-identity-claims.md)। |
| `external_capture_device_action` | action | जब कोई बाहरी कैप्चर डिवाइस पहचाना जाता है तब का निर्णय। |
| `face_audio_recording_enabled` | boolean | सेल्फ़ी कैप्चर के दौरान माइक्रोफ़ोन रिकॉर्ड करता है, ताकि समीक्षक सत्र सुन सके। डिफ़ॉल्ट रूप से बंद। |
| `face_search_enabled` | boolean | सेल्फ़ी पर स्वचालित [चेहरा खोज 1:N](https://docs.didit.me/hi/core-technology/face-search/overview.md#स्वचालित-चेहरा-खोज-को-बंद-करना) चलाता है: इसे पहले सत्यापित उपयोगकर्ताओं, चेहरा ब्लॉकलिस्ट और अलाउलिस्ट से मिलाता है, और बाद में मिलान के लिए इसका बायोमेट्रिक टेम्पलेट संग्रहीत करता है। डिफ़ॉल्ट रूप से चालू। `false` खोज को छोड़ देता है, इस चरण के लिए कोई चेहरा टेम्पलेट नहीं रखता, और डुप्लिकेट-चेहरा कार्रवाइयों के लिए कार्रवाई करने को कुछ नहीं रहता। |
| `face_liveness_uncertain_retry_enabled` | boolean | केवल नेटिव SDK एक्टिव लाइवनेस के लिए। चालू होने पर, ऐसा कैप्चर जिसका लाइवनेस स्कोर `face_liveness_score_decline_threshold` और `face_liveness_score_review_threshold` के बीच सख़्ती से हो, कभी तय नहीं किया जाता, चाहे इंजन ने उस पर कोई भी निर्णय लगाया हो: व्यक्ति को बताया जाता है कि परिणाम अस्पष्ट था और उसे हर बार `face_liveness_max_attempts` बजट से बाहर फिर से कैप्चर करने को कहा जाता है। (यह बजट अब भी उन कैप्चर पर लागू होता है जिन्हें इंजन स्कोर नहीं कर सका।) डिफ़ॉल्ट रूप से बंद; वेब फ़्लो इसे नज़रअंदाज़ करता है। |
| `face_liveness_duplicated_face_name_mismatch_action` | action | जब डुप्लिकेट चेहरा किसी अलग नाम के तहत मिलता है तब का निर्णय। |
| `face_liveness_duplicated_face_document_mismatch_action` | action | जब डुप्लिकेट चेहरा मिलता है और मिलान किए गए उपयोगकर्ता के पहचान दस्तावेज़ में अलग जन्म तिथि दिखती है तब का निर्णय। उसी व्यक्ति का किसी अलग या नवीनीकृत दस्तावेज़ पर होना चिह्नित नहीं किया जाता। डिफ़ॉल्ट `REVIEW` है। |
| `frame_injection_action` | action | जब इंजेक्ट किए गए वीडियो फ़्रेम पहचाने जाते हैं तब का निर्णय। |
| `screen_capture_action` | action | जब सेल्फ़ी किसी स्क्रीन की तस्वीर होती है तब का निर्णय। |
| `virtual_camera_action` | action | जब वर्चुअल कैमरा फ़ीड पहचानी जाती है तब का निर्णय। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। |

## चेहरा मिलान

सुविधा मान: `FACE_MATCH`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `face_match_score_decline_threshold` | पूर्णांक | अस्वीकृति थ्रेशोल्ड। |
| `face_match_score_review_threshold` | पूर्णांक | समीक्षा थ्रेशोल्ड। |
| `face_match_max_attempts` | पूर्णांक | प्रति सत्र चेहरा मिलान सबमिशन की कुल संख्या, `1` से `3` तक। डिफ़ॉल्ट `3` का अर्थ है एक प्रारंभिक प्रयास और दो पुनः प्रयास। |
| `face_match_not_computed_action` | प्रतिबंधित कार्रवाई | वह निर्णय जब चेहरा मिलान स्कोर तैयार नहीं हो सका (पोर्ट्रेट या सेल्फ़ी उपलब्ध न होने पर)। |
| `face_match_eyes_covered_action` | कार्रवाई | वह निर्णय जब सेल्फ़ी में आँखों वाला क्षेत्र ढका हो। डिफ़ॉल्ट रूप से `NO_ACTION` है, जो साक्ष्य रिकॉर्ड करता है लेकिन चेहरा मिलान परिणाम नहीं बदलता। यह संकेत अभी अंशांकित किया जा रहा है, इसलिए जब तक क्षेत्र अंशांकित होने की रिपोर्ट नहीं करता, यह केवल शैडो मोड में रहता है: अभी `REVIEW` या `DECLINE` सेट करने पर यह उसी समय से लागू होगा। |
| `face_match_mouth_covered_action` | कार्रवाई | वह निर्णय जब सेल्फ़ी में मुँह वाला क्षेत्र ढका हो। वही `NO_ACTION` डिफ़ॉल्ट और वही अंशांकन चेतावनी, जो `face_match_eyes_covered_action` के लिए है। |
| `face_match_face_covered_action` | कार्रवाई | वह निर्णय जब सेल्फ़ी में पूरा चेहरा ढका हो। वही `NO_ACTION` डिफ़ॉल्ट और वही अंशांकन चेतावनी, जो `face_match_eyes_covered_action` के लिए है। |
| `status_rules` | सरणी | वैकल्पिक कस्टम स्टेटस नियम। |

## आयु अनुमान

फ़ीचर मान: `AGE_ESTIMATION`।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `enable_id_verification_fallback` | boolean | जब आयु अनुमान सीमारेखा रेंज में आता है, तब पहचान सत्यापन चलाता है। |
| `minimum_age_threshold` | integer | स्वीकार की जाने वाली न्यूनतम आयु, `1` से `100` तक। |
| `borderline_minimum_age_threshold` | integer | सीमारेखा रेंज की निचली सीमा, `1` से `100` तक। |
| `borderline_maximum_age_threshold` | integer | सीमारेखा रेंज की ऊपरी सीमा, `1` से `100` तक। |
| `face_liveness_method` | string | `ACTIVE_3D`, `FLASHING`, या `PASSIVE` में से एक। |
| `face_liveness_flash_mode` | string | `ACTIVE_3D` और `FLASHING` मेथड के लिए फ़्लैश मोड। `"0"` (सख़्त नहीं, डिफ़ॉल्ट) सत्यापित करता है कि स्क्रीन पर फ़्लैश किए गए रंग उपयोगकर्ता के चेहरे पर परावर्तित होते हैं; `"1"` (सख़्त) इसके अलावा यह भी आवश्यक करता है कि परावर्तन फ़्लैश किए गए रंगों के सटीक क्रम से मेल खाएँ। |
| `face_liveness_score_decline_threshold` | number | आयु अनुमान द्वारा उपयोग की जाने वाली लाइवनेस जाँच के लिए अस्वीकृति थ्रेशोल्ड। |
| `face_liveness_score_review_threshold` | number | आयु अनुमान द्वारा उपयोग की जाने वाली लाइवनेस जाँच के लिए समीक्षा थ्रेशोल्ड। |
| `face_liveness_possible_duplicated_face_action` | action | जब चेहरा डुप्लीकेट हो सकता है, तब की जाने वाली कार्रवाई। |
| `face_liveness_multiple_faces_action` | action | जब एक से अधिक चेहरे पाए जाते हैं, तब की जाने वाली कार्रवाई। |
| `face_liveness_video_anomaly_action` | action | जब संग्रहीत रिकॉर्डिंग में दोहराया गया गतिशील क्रम हो, तब की जाने वाली कार्रवाई। डिफ़ॉल्ट `NO_ACTION` है; `REVIEW` और `DECLINE` पहले से तय किए गए सत्यापन को अतुल्यकालिक रूप से आगे की कार्रवाई के लिए भेज सकते हैं। अकेले विरल या दोहराए गए स्थिर फ़्रेम इसे ट्रिगर नहीं करते। |
| `face_liveness_attack_face_match_action` | action | जब लाइवनेस जाँच में मिला चेहरा इसी एप्लिकेशन के किसी पिछले सत्र के किसी अन्य उपयोगकर्ता के चेहरे से मेल खाता है, जिसका कैप्चर उच्च विश्वास के साथ लाइवनेस हमला माना गया था (चेतावनी `FACE_MATCHES_LIVENESS_ATTACK`), तब की जाने वाली कार्रवाई। इसके लिए `NO_ACTION` या `REVIEW` स्वीकार्य हैं; `DECLINE` स्वीकार किया जाता है, पर उसे `REVIEW` के रूप में लागू किया जाता है, क्योंकि कोई वास्तविक उपयोगकर्ता गलती से एक बार अस्वीकृत होकर फिर पास हो सकता है। डिफ़ॉल्ट `NO_ACTION` है। |
| `face_privacy_mode_enabled` | boolean | चेहरे की संपत्तियों के लिए गोपनीयता मोड सक्षम करता है। |
| `face_quality_review_threshold` | integer | चेहरे की गुणवत्ता के लिए समीक्षा थ्रेशोल्ड। |
| `face_quality_decline_threshold` | integer | चेहरे की गुणवत्ता के लिए अस्वीकृति थ्रेशोल्ड। |
| `face_luminance_min_threshold` | integer | न्यूनतम ल्यूमिनेंस थ्रेशोल्ड। |
| `face_luminance_min_action` | action | जब ल्यूमिनेंस बहुत कम हो, तब की जाने वाली कार्रवाई। |
| `face_luminance_max_threshold` | integer | अधिकतम ल्यूमिनेंस थ्रेशोल्ड। |
| `face_luminance_max_action` | action | जब ल्यूमिनेंस बहुत अधिक हो, तब की जाने वाली कार्रवाई। |
| `face_liveness_max_attempts` | integer | प्रति सत्र कुल लाइवनेस सबमिशन, `1` से `3` तक। डिफ़ॉल्ट `3` का अर्थ है एक प्रारंभिक प्रयास और दो पुनः प्रयास। `1` सेट करने से कैप्चर-गुणवत्ता विफलताओं के लिए पुनः प्रयास बंद नहीं होते: जब किसी प्रयास की हर चेतावनी पर्यावरण संबंधी हो (`LOW_FACE_LUMINANCE`, `HIGH_FACE_LUMINANCE`, `LOW_FACE_QUALITY`, `HIGH_FACE_OCCLUSION`, `NO_FACE_DETECTED`), तो उपयोगकर्ता को हमेशा कार्रवाई योग्य फ़ीडबैक के साथ दूसरा प्रयास मिलता है। |
| `external_capture_device_action` | action | जब बाहरी कैप्चर डिवाइस का पता चलता है, तब का निर्णय। |
| `face_audio_recording_enabled` | boolean | सेल्फ़ी कैप्चर के दौरान माइक्रोफ़ोन रिकॉर्ड करता है, ताकि समीक्षक सत्र सुन सके। डिफ़ॉल्ट रूप से बंद रहता है। |
| `face_search_enabled` | boolean | सेल्फ़ी पर स्वचालित [चेहरा खोज 1:N](https://docs.didit.me/hi/core-technology/face-search/overview.md#स्वचालित-चेहरा-खोज-को-बंद-करना) चलाता है: इसे पहले सत्यापित उपयोगकर्ताओं, चेहरा ब्लॉकलिस्ट और अलाउलिस्ट से मिलाता है, और बाद में मिलान के लिए इसका बायोमेट्रिक टेम्पलेट संग्रहीत करता है। डिफ़ॉल्ट रूप से चालू रहता है। `false` खोज को छोड़ देता है, इस चरण के लिए कोई चेहरा टेम्पलेट नहीं रखता, और डुप्लीकेट चेहरे से संबंधित कार्रवाइयों के लिए कुछ नहीं बचता। |
| `face_liveness_uncertain_retry_enabled` | boolean | केवल नेटिव SDK एक्टिव लाइवनेस के लिए। चालू होने पर, ऐसा कैप्चर जिसका लाइवनेस स्कोर `face_liveness_score_decline_threshold` और `face_liveness_score_review_threshold` के बीच सख़्ती से हो, उसका निर्णय कभी नहीं लिया जाता, भले ही इंजन ने कोई भी निर्णय जोड़ा हो: व्यक्ति को बताया जाता है कि परिणाम अस्पष्ट था और उसे हर बार `face_liveness_max_attempts` की सीमा से बाहर फिर से कैप्चर करने को कहा जाता है। (यह सीमा उन कैप्चर पर अब भी लागू होती है जिन्हें इंजन स्कोर नहीं कर पाया।) डिफ़ॉल्ट रूप से बंद रहता है; वेब फ़्लो इसे अनदेखा करता है। |
| `face_liveness_duplicated_face_name_mismatch_action` | action | जब डुप्लीकेट चेहरा किसी अलग नाम से मिले, तब का निर्णय। |
| `face_liveness_duplicated_face_document_mismatch_action` | action | जब डुप्लीकेट चेहरा मिले और मिलान वाले उपयोगकर्ता के पहचान दस्तावेज़ में अलग जन्म तिथि दिखे, तब का निर्णय। किसी भिन्न या नवीनीकृत दस्तावेज़ पर वही व्यक्ति चिह्नित नहीं किया जाता। डिफ़ॉल्ट `REVIEW` है। |
| `frame_injection_action` | action | जब इंजेक्ट किए गए वीडियो फ़्रेम मिलें, तब का निर्णय। |
| `screen_capture_action` | action | जब सेल्फ़ी किसी स्क्रीन की फ़ोटो हो, तब का निर्णय। |
| `virtual_camera_action` | action | जब वर्चुअल कैमरा फ़ीड का पता चले, तब का निर्णय। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। |

## फ़ोन सत्यापन

सुविधा मान: `PHONE_VERIFICATION`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `code_size` | पूर्णांक | OTP का आकार, `4` से `8`। |
| `phone_max_retries` | पूर्णांक | कोड भेजने के अधिकतम पुनः प्रयास, `1` से `5`। |
| `phone_max_check_attempts` | पूर्णांक | OTP जाँच के अधिकतम प्रयास, `1` से `5`। |
| `phone_verification_countries` | ऑब्जेक्ट | ISO2 देश कोड से चैनल कॉन्फ़िग तक। उदाहरण: `{ "US": { "sms": { "enabled": true } } }`। |
| `disposable_number_action` | कार्रवाई | डिस्पोज़ेबल नंबरों के लिए कार्रवाई। |
| `voip_number_action` | कार्रवाई | VoIP नंबरों के लिए कार्रवाई। |
| `duplicated_phone_number_action` | कार्रवाई | डुप्लिकेट फ़ोन नंबरों के लिए कार्रवाई। |
| `high_risk_phone_action` | कार्रवाई | उस स्थिति में कार्रवाई जब डिलीवरी प्रदाता OTP भेजने को ब्लॉक करता है। केवल `DECLINE` या `REVIEW`; डिफ़ॉल्ट `DECLINE`। यह सेटिंग तभी लागू होती है जब चरण पर हर ब्लॉक में `risk_factors` बिल्कुल `["device_attribute"]` हो; कोई अन्य जोखिम कारक, इसे शामिल करने वाला कोई भी मिश्रण, या कोई भी जोखिम कारक न होने पर इस सेटिंग से हटकर हमेशा अस्वीकार किया जाता है। |
| `phone_shared_device_mode` | बूलियन | साझा-डिवाइस फ़ोन सत्यापन मोड की अनुमति देता है। |
| `phone_enrichment_enabled` | बूलियन | फ़ोन इंटेलिजेंस एनरिचमेंट सक्षम करता है (लाइन-प्रकार जोखिम, ट्रस्ट इंडेक्स, कैरियर, पोर्टिंग / SIM-swap इतिहास, धोखाधड़ी जोखिम स्कोर)। **फ़ोन सत्यापन की कीमत के अलावा प्रति सत्यापन \$0.05 शुल्क लिया जाता है।** |
| `phone_intelligence_score_action` | कार्रवाई | उस स्थिति में कार्रवाई जब फ़ोन धोखाधड़ी जोखिम स्कोर `phone_intelligence_score_threshold` के बराबर या उससे अधिक हो। |
| `phone_intelligence_score_threshold` | पूर्णांक | धोखाधड़ी जोखिम स्कोर (`0`–`100`, जितना अधिक उतना जोखिम भरा) जो `phone_intelligence_score_action` को ट्रिगर करता है। डिफ़ॉल्ट `80`। |
| `phone_type_risk_action` | कार्रवाई | उस स्थिति में कार्रवाई जब नंबर को उच्च-जोखिम फ़ोन प्रकार के रूप में चिह्नित किया गया हो। |
| `recent_port_action` | कार्रवाई | उस स्थिति में कार्रवाई जब नंबर हाल ही में पोर्ट किया गया हो (SIM-swap / पोर्टिंग संकेत)। |
| `low_phone_trust_action` | कार्रवाई | उस स्थिति में कार्रवाई जब फ़ोन ट्रस्ट इंडेक्स `phone_trust_index_threshold` के बराबर या उससे कम हो। |
| `phone_trust_index_threshold` | पूर्णांक | ट्रस्ट इंडेक्स (`0`–`100`, जितना कम उतना जोखिम भरा) जिस पर या उससे नीचे `low_phone_trust_action` लागू होता है। डिफ़ॉल्ट `30`। |
| `phone_social_enabled` | बूलियन | सोशल फ़ुटप्रिंट जाँच सक्षम करता है: सत्यापित नंबर किन मैसेजिंग, सोशल, ई-कॉमर्स और प्रोफ़ेशनल प्लेटफ़ॉर्म पर पंजीकृत है। `phone_enrichment_enabled` से स्वतंत्र, **फ़ोन सत्यापन की कीमत के अलावा प्रति सत्यापन \$0.05 शुल्क लिया जाता है।** |
| `phone_no_social_presence_action` | कार्रवाई | उस स्थिति में कार्रवाई जब सोशल फ़ुटप्रिंट जाँच में नंबर उन किसी भी प्लेटफ़ॉर्म पर पंजीकृत न मिले जिन्हें वह कवर करती है, जो एक आम सिंथेटिक पहचान संकेत है। डिफ़ॉल्ट `NO_ACTION`। |
| `cross_org_fraud_phone_action` | कार्रवाई | निर्णय जब नेटवर्क के किसी अन्य संगठन द्वारा इस नंबर को धोखाधड़ीपूर्ण के रूप में चिह्नित किया गया हो। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

फ़ोन सत्यापन तब तक अक्षम रहता है जब तक संगठन अपना पहला टॉप अप पूरा नहीं करता।

> [!NOTE]
>
> फ़ोन इंटेलिजेंस एनरिचमेंट एक वैकल्पिक ऐड-ऑन है। जब `phone_enrichment_enabled` `true` हो, तो हर पूर्ण फ़ोन सत्यापन फ़ोन इंटेलिजेंस से समृद्ध किया जाता है और मानक फ़ोन सत्यापन लागत के अलावा **प्रति अनुरोध \$0.05 बिल किया जाता है**। स्कोर-आधारित कार्रवाइयाँ तभी प्रभावी होती हैं जब एनरिचमेंट स्कोर उपलब्ध हो; ट्रस्ट-इंडेक्स, फ़ोन-प्रकार और पोर्टिंग कार्रवाइयाँ एनरिचमेंट चलते ही लागू हो जाती हैं।
>
> सोशल फ़ुटप्रिंट जाँच एक दूसरा, अलग ऐड-ऑन है। जब `phone_social_enabled` `true` हो, तो हर पूर्ण फ़ोन सत्यापन यह भी बताता है कि नंबर किन ऑनलाइन प्लेटफ़ॉर्म पर पंजीकृत है: मैसेजिंग, सोशल मीडिया, ई-कॉमर्स और प्रोफ़ेशनल सेवाएँ, और इसके लिए **प्रति अनुरोध \$0.05 बिल किया जाता है**। इसे `phone_enrichment_enabled` के साथ या उसके बिना सक्षम किया जा सकता है: दोनों ऐड-ऑन की कीमत और बिलिंग स्वतंत्र रूप से होती है। जो लुकअप नंबर को उन किसी भी प्लेटफ़ॉर्म पर नहीं पाता जिन्हें वह कवर करता है, वह एक मान्य और बिल किया जाने वाला उत्तर है, और यह `phone_no_social_presence_action` को ट्रिगर करता है। परिणाम के आधार पर वर्कफ़्लो ग्राफ़ में शाखा बनाने के लिए `phone.social_profiles_registered` (उन प्लेटफ़ॉर्मों की संख्या जिन पर नंबर पंजीकृत है) का उपयोग करें।

## ईमेल सत्यापन

सुविधा का मान: `EMAIL_VERIFICATION`।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `email_code_size` | integer | OTP का आकार, `4` से `8`। |
| `email_max_retries` | integer | कोड भेजने के अधिकतम पुनः प्रयास, `1` से `5`। |
| `email_max_check_attempts` | integer | OTP जाँच के अधिकतम प्रयास, `1` से `5`। |
| `email_alphanumeric_code` | boolean | ईमेल कोड में अक्षर-अंक का उपयोग करता है। |
| `breached_email_action` | action | डेटा ब्रीच में पाए गए ईमेल के लिए कार्रवाई। |
| `disposable_email_action` | action | अस्थायी (डिस्पोज़ेबल) ईमेल के लिए कार्रवाई। |
| `duplicated_email_action` | action | डुप्लिकेट ईमेल के लिए कार्रवाई। |
| `only_corporate_emails_allowed` | boolean | गैर-कॉर्पोरेट ईमेल पते अस्वीकार करता है। |
| `email_enrichment_enabled` | boolean | ईमेल इंटेलिजेंस एनरिचमेंट सक्षम करता है (डिलीवरेबिलिटी, डोमेन प्रतिष्ठा, डेटा ब्रीच में उजागर होना, धोखाधड़ी जोखिम स्कोर)। ईमेल सत्यापन की कीमत के अतिरिक्त **प्रति सत्यापन \$0.05 शुल्क लिया जाता है**। |
| `email_intelligence_score_action` | action | जब ईमेल धोखाधड़ी जोखिम स्कोर `email_intelligence_score_threshold` के बराबर या उससे अधिक हो, तब की जाने वाली कार्रवाई। |
| `email_intelligence_score_threshold` | integer | धोखाधड़ी जोखिम स्कोर (`0`–`100`, जितना अधिक, उतना जोखिम भरा) जो `email_intelligence_score_action` को ट्रिगर करता है। डिफ़ॉल्ट `80`। |
| `recent_email_breach_action` | action | जब ईमेल किसी हाल के ज्ञात डेटा ब्रीच में दिखाई दे, तब की जाने वाली कार्रवाई। |
| `frequent_email_breach_action` | action | जब ईमेल कई ज्ञात डेटा ब्रीच में दिखाई दे, तब की जाने वाली कार्रवाई। |
| `email_social_enabled` | boolean | सोशल उपस्थिति जाँच सक्षम करता है: सत्यापित पता किन ईमेल, सोशल, प्रोफ़ेशनल, ई-कॉमर्स और मनोरंजन प्लेटफ़ॉर्म पर पंजीकृत है। `email_enrichment_enabled` से स्वतंत्र, ईमेल सत्यापन की कीमत के अतिरिक्त **प्रति सत्यापन \$0.05 शुल्क लिया जाता है**। |
| `email_no_social_presence_action` | action | जब सोशल उपस्थिति जाँच में पता उन प्लेटफ़ॉर्म में से किसी पर भी पंजीकृत न मिले, तो की जाने वाली कार्रवाई। ऐसा न मिलना सिंथेटिक पहचान का एक आम संकेत है। डिफ़ॉल्ट `NO_ACTION`। |
| `cross_org_fraud_email_action` | action | नेटवर्क में किसी दूसरे संगठन द्वारा इस पते को धोखाधड़ी के रूप में चिह्नित किए जाने पर निर्णय। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। |

> [!NOTE]
>
> ईमेल इंटेलिजेंस एनरिचमेंट एक वैकल्पिक ऐड-ऑन है। जब `email_enrichment_enabled` `true` हो, तो पूरी हुई हर ईमेल सत्यापन प्रक्रिया ईमेल इंटेलिजेंस से समृद्ध की जाती है और मानक ईमेल सत्यापन लागत के अतिरिक्त **प्रति अनुरोध \$0.05 का शुल्क लिया जाता है**। स्कोर-आधारित कार्रवाई एनरिचमेंट स्कोर उपलब्ध होने के बाद लागू होती है; ब्रीच से जुड़ी कार्रवाइयाँ एनरिचमेंट चलते ही लागू हो जाती हैं।
>
> सोशल उपस्थिति जाँच एक दूसरा, अलग ऐड-ऑन है। जब `email_social_enabled` `true` हो, तो पूरी हुई हर ईमेल सत्यापन प्रक्रिया यह भी बताती है कि पता किन ऑनलाइन प्लेटफ़ॉर्म पर पंजीकृत है: ईमेल प्रदाता, सोशल मीडिया, प्रोफ़ेशनल, ई-कॉमर्स और मनोरंजन सेवाएँ, और इसके लिए **प्रति अनुरोध \$0.05 का शुल्क लिया जाता है**। इसे `email_enrichment_enabled` के साथ या उसके बिना सक्षम किया जा सकता है: दोनों ऐड-ऑन की कीमत और बिलिंग स्वतंत्र हैं। यदि जाँच में पता उन प्लेटफ़ॉर्म में से किसी पर भी नहीं मिलता जिन्हें वह कवर करती है, तो यह एक मान्य और बिल योग्य उत्तर है, और इससे `email_no_social_presence_action` ट्रिगर होता है। वर्कफ़्लो ग्राफ़ में परिणाम के आधार पर शाखा बनाने के लिए `email.social_profiles_registered` (उन प्लेटफ़ॉर्मों की संख्या जिन पर पता पंजीकृत है) का उपयोग करें।

## डेटाबेस सत्यापन

सुविधा मान: `DATABASE_VALIDATION`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `database_validation_countries` | ऑब्जेक्ट | ISO3 देश कोड से `{ "services": ["service_id"] }` तक। डेटाबेस सत्यापन कैटलॉग से सेवा ID का उपयोग करें। |
| `database_validation_partial_match_action` | कार्रवाई | जब डेटाबेस सत्यापन आंशिक मिलान लौटाता है, तब की जाने वाली कार्रवाई। |
| `database_validation_no_match_action` | कार्रवाई | जब डेटाबेस सत्यापन कोई मिलान नहीं लौटाता, तब की जाने वाली कार्रवाई। |
| `database_validation_not_applicable_action` | कार्रवाई | जब डेटाबेस सत्यापन इसलिए नहीं चल सकता क्योंकि दस्तावेज़ में कॉन्फ़िगर की गई सेवाओं के लिए आवश्यक पहचानकर्ता नहीं है (जैसे राष्ट्रीय ID संख्या के बिना पासपोर्ट), तब की जाने वाली कार्रवाई। डिफ़ॉल्ट `NO_ACTION` है। |
| `database_validation_field_sources` | ऑब्जेक्ट | उस डेटाबेस इनपुट को पढ़ने का स्रोत, जिसे ग्राफ़ में पहले का कोई चरण नहीं भर सकता। `source` उत्पादक का नाम देता है और `key` उसके भीतर का मान: `document_ai` के लिए Document AI फ़ील्ड कुंजी, `questionnaire` के लिए प्रश्नावली नोड ID, और `expected_data` के लिए `expected_details.<field>` या `metadata.<key>`। किसी पहले के चरण से हूबहू मेल खाने वाली कुंजियाँ अपने आप हल हो जाती हैं और जानबूझकर सहेजी नहीं जातीं, इसलिए Document AI फ़ील्ड का नाम बदलने से कॉन्फ़िग में पुरानी मैपिंग नहीं जमती। गलत प्रविष्टि को `400` के साथ अस्वीकार किया जाता है, जो उसके इनपुट फ़ील्ड का नाम बताता है। संरचना: `{"<db_validation_input_field>": {"source": "document_ai"\|"questionnaire"\|"expected_data", "key": "<docai field key>\|<questionnaire node id>\|expected_details.<field>\|metadata.<key>"}}`। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्थिति नियम। |

उदाहरण:

```json theme={null}
{
  "feature": "DATABASE_VALIDATION",
  "config": {
    "database_validation_countries": {
      "BRA": {
        "services": ["SERVICE_ID_FROM_CATALOG"]
      }
    },
    "database_validation_field_sources": {
      "tax_id": {
        "source": "expected_data",
        "key": "expected_details.document_number"
      }
    },
    "database_validation_no_match_action": "REVIEW",
    "database_validation_partial_match_action": "REVIEW"
  }
}
```

> [!WARNING]
>
> `database_validation_countries` ही तय करता है कि यह चरण कोई काम करे। इसके बिना सहेजा गया `DATABASE_VALIDATION`
> सुविधा स्वीकार तो हो जाता है, लेकिन फिर कोई भी जाँच नहीं चलती, इसलिए हमेशा कम से कम एक देश के साथ कम से कम एक सेवा ID भेजें।

जिस सेवा ID को यह चरण नहीं चला सकता, उसे `400` के साथ अस्वीकार किया जाता है, जो उसका नाम और कारण बताता है, और कुछ भी सहेजा नहीं जाता। इसमें ऐसी ID शामिल है जो कैटलॉग में नहीं है, जो किसी दूसरे देश की है, जो अभी उपलब्ध नहीं है, और जो केवल स्वतंत्र [`POST /v3/database-validation/`](https://docs.didit.me/hi/core-technology/database-validation/overview) के माध्यम से दी जाने वाली सेवा है।
जिस सेवा के इनपुट पहले का कोई चरण उपलब्ध नहीं कराता, उसे इसी तरह अस्वीकार किया जाता है, और गायब इनपुट सूचीबद्ध किए जाते हैं।
सहेजे गए वर्कफ़्लो में पहले से मौजूद कोई सेवा, जिसे अब नहीं चलाया जा सकता, आपके दोबारा सहेजने पर हटा दी जाती है।

उदाहरण के लिए, यह अर्जेंटीना वर्कफ़्लो पहचान सत्यापन से DNI संख्या और लिंग पढ़ता है और बिना सेल्फ़ी के उन्हें RENAPER से मिलाता है:

```json theme={null}
{
  "workflow_label": "Argentina DNI check",
  "features": [
    {"feature": "OCR"},
    {
      "feature": "DATABASE_VALIDATION",
      "config": {"database_validation_countries": {"ARG": {"services": ["arg_renaper_data"]}}}
    }
  ]
}
```

इसके बजाय `arg_renaper` का उपयोग करें, `LIVENESS` चरण के बाद, ताकि सेल्फ़ी का मिलान भी RENAPER के पास मौजूद फ़ोटो से हो।
इसके चेहरा मिलान स्कोर और थ्रेशोल्ड के लिए [RENAPER](https://docs.didit.me/hi/api-reference/database-validation/argentina/renaper.md) देखें।

## बैंक सत्यापन

सुविधा मान: `BANK_VERIFICATION`.

उपयोगकर्ता एक बैंक खाते का सत्यापन करता है, और बैंक जिस खाताधारक का नाम बताता है, उसकी तुलना वर्कफ़्लो के किसी पिछले चरण द्वारा स्थापित पहचान से की जाती है। उपयोगकर्ता इसके लिए दो में से एक तरीका चुनता है: बैंक साइन-इन (`open_banking`), जिसमें वह अपने बैंक में साइन इन करता है, या खाता जाँच (`account_lookup`), जिसमें वह खाते का विवरण टाइप करता है और बैंक उस पर दर्ज नाम की पुष्टि करता है। `bank_method_order` और हर देश का `methods` यह तय करते हैं कि कौन सा देश कौन से तरीके पेश करता है और कौन सा तरीका पहले आता है; देखें [बैंक सत्यापन के तरीके](https://docs.didit.me/hi/core-technology/bank-verification/verification-methods.md)। यह चरण साक्ष्य उत्पन्न करता है: खाताधारक के नाम का स्कोर, वह तुलना जिससे वह स्कोर बना, और कारण कोड। `bank_*_action` कुंजियाँ इस साक्ष्य को एक स्थिति में बदलती हैं।

दो बातें तय करती हैं कि नोड कुछ करेगा भी या नहीं। `bank_countries` एक अनुमति सूची है, इसलिए खाली मानचित्र किसी बैंक की पेशकश नहीं करता और कोई जाँच नहीं चलाता। और खाताधारक की तुलना के लिए कुछ चाहिए: इससे पहले `OCR`, `DATABASE_VALIDATION` या `QUESTIONNAIRE` चरण रखें, सत्र बनाते समय `expected_details` भेजें, या `bank_field_sources` से फ़ील्ड खुद मैप करें। इनमें से कुछ भी न हो, तो स्वामित्व केवल `unknown` हो सकता है, और यह तय `bank_reference_identity_missing_action` करता है।

> [!NOTE]
>
> बैंक सत्यापन अभी रोलआउट हो रहा है, इसलिए `BANK_VERIFICATION` नोड केवल उसी खाते पर स्वीकार होता है जहाँ यह सक्षम किया गया हो। बाकी जगह सेव अस्वीकार हो जाता है और यह बताया जाता है। यह चरण कौन सा रूट चलाए, यह भी यहाँ कॉन्फ़िगर नहीं होता: यह `provider_key` और `fallback_to_native` की वह जोड़ी है जिसे कंसोल का [मार्केटप्लेस](https://docs.didit.me/hi/console/marketplace.md) आपके लिए सेट करता है।

### बैंक खाता जोड़ना

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_countries` | object | किन देशों में उपयोगकर्ता बैंक जोड़ सकता है। यह एक अनुमति सूची है: खाली मानचित्र का अर्थ है कि नोड कुछ पेश नहीं करता और कुछ नहीं चलाता। `institutions` चयनकर्ता को विशिष्ट संस्थान ID तक सीमित करता है, और `"all"` उस देश के हर पहचान-सक्षम बैंक की पेशकश करता है। जिस देश को नोड का कोई रूट सेवा नहीं देता, वह प्रविष्टि रखी जाती है: वह केवल अपने फ़ॉलबैक पेश करती है और आपके बैंक के बिना जारी रखने की पेशकश करती है, देखें [जब व्यक्ति अपना बैंक सत्यापित नहीं कर पाता](https://docs.didit.me/hi/core-technology/bank-verification/fallbacks.md)। ऐसा कोड जो किसी देश का नाम नहीं देता, सेव पर अस्वीकार हो जाता है। `methods` यह तय करता है कि देश बैंक साइन-इन (`open_banking`) और खाता जाँच (`account_lookup`) में से कौन सा तरीका, किस क्रम में पेश करता है, और यह `bank_method_order` पर वरीयता रखता है: उपयोगकर्ता पहले तरीके से शुरू करता है और दूसरे को बैकअप के रूप में पाता है। सक्षम देश का `methods` यदि ऐसा तरीका नामित करता है जिसे नोड का कोई रूट वहाँ सेवा नहीं देता, तो सेव अस्वीकार होता है, और वैसा ही होता है जब कोई रूट जिस देश को सेवा देता है, `methods` उसके लिए कोई तरीका न छोड़े। आकार: `{"<ISO3>": {"enabled": true\|false, "institutions": ["<institution_id>", ...]\|"all", "methods"?: ["open_banking"\|"account_lookup", ...]}}`। |
| `bank_method_order` | string\[] | जिन देशों में अपना `methods` नहीं है, उन सभी में चरण ये दो तरीके किस क्रम में पेश करता है: `open_banking` (बैंक साइन-इन: उपयोगकर्ता अपने बैंक में साइन इन करता है, और केवल यही तरीका शेष राशि, लेन-देन और आय पढ़ता है) और `account_lookup` (खाता जाँच: कोई साइन-इन नहीं, केवल स्वामित्व)। हर देश में उपयोगकर्ता वहाँ सेवा देने वाले पहले तरीके से शुरू करता है और दूसरे को बैकअप के रूप में पाता है; जिस तरीके को किसी देश में कोई रूट सेवा नहीं देता, उसे वहाँ छोड़ दिया जाता है। कम से कम एक तरीका होना चाहिए। जो सेव कोई भी तरीका नहीं भेजता, उसे `["open_banking", "account_lookup"]` मिलता है, जब तक वह `bank_open_banking_enabled` या `bank_account_lookup_enabled` न भेजे, जो तब इसे सेट करते हैं। |
| `bank_scopes` | object | उपयोगकर्ता से किस चीज़ को साझा करने की सहमति माँगी जाती है। `ownership` वह है जिसे उत्पाद सत्यापित करता है और इसे बंद नहीं किया जा सकता। `identifiers` IBAN या खाता नंबर को अनमास्क करता है; `balances`, `transactions` और `income` वास्तविक वित्तीय डेटा पढ़ते हैं, इनमें से हर एक का अलग बिल होता है, और जब तक आपके एप्लिकेशन के पास वित्तीय-डेटा अधिकार न हो, इन्हें सेव पर अस्वीकार किया जाता है। केवल बैंक साइन-इन डेटा पढ़ता है: जो देश खाता जाँच पेश करता है, उसे अस्वीकार नहीं किया जाता, और जो उपयोगकर्ता खाता जाँच से सत्यापित करता है, वह बिना डेटा के आगे बढ़ता है, जिसे परिणाम `financial_data.not_collected` में सूचीबद्ध करता है। जो स्कोप बंद है, उसे कभी नहीं माँगा जाता, इसलिए बैंक उसे अपनी सहमति स्क्रीन पर कभी नहीं दिखाता। डिफ़ॉल्ट केवल `ownership` है। आकार: `{"ownership": true, "identifiers": true\|false, "balances": true\|false, "transactions": true\|false, "income": true\|false}`। |
| `bank_eligible_account_types` | string\[] | उपयोगकर्ता कौन से खाता प्रकार चुन सकता है: `checking`, `current`, `savings`, `business` या `other`। क्रेडिट कार्ड, ऋण और निवेश खाते कभी पात्र नहीं होते, क्योंकि वे भुगतान खाते का स्वामित्व स्थापित नहीं करते। डिफ़ॉल्ट current और checking है। |
| `bank_account_selection` | string | `user` उपयोगकर्ता को चुनने देता है कि जुड़े खातों में से कौन सा सत्यापित हो; `auto` पहला पात्र खाता लेता है। |
| `bank_require_oauth_only` | boolean | केवल वे संस्थान पेश करता है जो OAuth या ऐप-से-ऐप माध्यम से पहुँचे जा सकते हैं, कभी भी पुरानी क्रेडेंशियल-कैप्चर स्क्रीन नहीं। जिन बाज़ारों में ओपन बैंकिंग पहले से OAuth को ही एकमात्र रास्ता बनाती है, वहाँ यह कुछ नहीं बदलता। |
| `bank_max_attempts` | integer | उपयोगकर्ता को कितने बैंक साइन-इन प्रयास मिलते हैं, `1` से `5` तक; माइक्रो-डिपॉज़िट या स्टेटमेंट अपलोड भी एक प्रयास खर्च करता है। खाता जाँच का अपना `bank_account_check_max_attempts` है। जब उपयोगकर्ता को सत्यापित करने के हर तरीके, स्टेटमेंट अपलोड सहित, पेश किए जा चुके हों और वे बिना सफल कनेक्शन के अपने प्रयास खर्च कर चुके हों, तब `bank_attempts_exhausted_action` तय करता है कि आगे क्या होगा। |
| `bank_connection_timeout_minutes` | integer | शुरू किया गया कनेक्शन कितनी देर खुला रहता है, इससे पहले कि प्रयास छोड़ दिया जाए, `5` से `60` मिनट। |
| `bank_allow_skip` | boolean | `bank_continue_without_bank` द्वारा हटा दिया गया है: अब उपयोगकर्ता हमेशा बैंक के बिना आगे बढ़ सकता है। जो सेव `bank_continue_without_bank` नहीं भेजता, उससे इसे एक रिलीज़ के लिए पढ़ा जाता है: `true` इसे `from_start` पर सेट करता है, कोई और मान `when_needed` पर। हर सेव इसे वापस लिखता है: `from_start` के लिए `true`, `when_needed` के लिए `false`। |

### जब उपयोगकर्ता सत्यापित न कर सके

उपयोगकर्ता हमेशा बैंक के बिना आगे बढ़ सकता है, और यह चरण उसे कभी अटका हुआ नहीं छोड़ता। देखें [जब व्यक्ति अपना बैंक सत्यापित नहीं कर पाता](https://docs.didit.me/hi/core-technology/bank-verification/fallbacks.md)।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_continue_without_bank` | string | जब उपयोगकर्ता को **Continue without your bank** दिखता है। `when_needed`, जो डिफ़ॉल्ट है, इसे तब दिखाता है जब उपयोगकर्ता के देश या बैंक के लिए कोई भी तरीका काम न करे, जब उसका बैंक पहुँच से बाहर हो और कोई दूसरा तरीका उसकी पुष्टि न कर सके, उदाहरण के लिए जब खाता जाँच भी बैंक तक न पहुँच सकी हो, या जब वह कहे कि उसके पास ऑनलाइन बैंकिंग नहीं है। `from_start` इसे पहली स्क्रीन पर भी दिखाता है। इसे बंद नहीं किया जा सकता। ऐसा सेव जो न यह कुंजी भेजे और न `bank_allow_skip`, उसे `when_needed` मिलता है। |
| `bank_statement_standalone_enabled` | boolean | `bank_statement_enabled` के साथ, किसी भी बैंक प्रयास के न होने पर भी बैंक स्टेटमेंट अपलोड की पेशकश करता है, किसी भी देश में, जिसमें वह देश भी शामिल है जहाँ कोई बैंक साइन-इन या खाता जाँच रूट उपलब्ध नहीं है। फिर इसका बिल अलग से `bank_statement_upload` के रूप में होता है, USD 0.20 प्रति मूल्यांकित स्टेटमेंट, आपकी अनुबंध दर या विशेष कीमत लागू होने से पहले: देखें [मूल्य निर्धारण](https://docs.didit.me/hi/core-technology/bank-verification/fallbacks.md#मूल्य-निर्धारण)। सैंडबॉक्स सत्र बिना बिलिंग के इसका परीक्षण कर सकते हैं। डिफ़ॉल्ट रूप से चालू। |

उपयोगकर्ता के जारी रखने का सत्र पर क्या असर होता है, यह इस पर निर्भर करता है कि उसने क्यों जारी रखा: `bank_unsupported_action`, `bank_attempts_exhausted_action` या `bank_skipped_action`, जब तक उससे पहले का कोई प्रयास चरण का निर्णय पहले ही न ले चुका हो: देखें [निर्णय कार्रवाइयाँ](#निर्णय-कार्रवाइयाँ)।

### धारक की तुलना

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_reference_identity` | string | कौन-सा पिछला चरण वह पहचान देता है जिससे धारक की तुलना होती है: `kyc` (पहचान सत्यापन), `database_validation`, `expected_details` (जो आपने सत्र बनाते समय भेजा था), `questionnaire`, या `auto`, जिससे भी वर्कफ़्लो ने पहचान उत्पन्न की हो। जिस चरण ने वास्तव में पहचान दी, वह परिणाम में `reference_identity_source` के रूप में लौटता है। |
| `bank_field_sources` | object | जब ग्राफ़ का कोई पिछला चरण संदर्भ पहचान का कोई फ़ील्ड न भर सके, तब उसे कहाँ से पढ़ा जाए। मैप की कुंजी इनमें से एक है: `full_name`, `first_name`, `last_name`, `address`; `source` उत्पादक का नाम देता है और `key` उसके भीतर का मान: `document_ai` के लिए Document AI फ़ील्ड key, `questionnaire` के लिए प्रश्नावली नोड id, और `expected_data` के लिए `expected_details.<field>` या `metadata.<key>`। `expected_details.` के अंतर्गत मान केवल उसी फ़ील्ड का नाम ले सकता है जो सत्र-निर्माण payload में वास्तव में आता है: `address`, `country`, `date_of_birth`, `first_name`, `gender`, `id_country`, `identification_number`, `ip_address`, `last_name`, `nationality` या `poa_country`। दोषपूर्ण प्रविष्टि सेव करते समय अस्वीकार होती है, छोड़ी नहीं जाती। संरचना: `{"full_name"\|"first_name"\|"last_name"\|"address": {"source": "document_ai"\|"questionnaire"\|"expected_data", "key": "<docai field key>\|<questionnaire node id>\|expected_details.<field>\|metadata.<key>"}}`। |
| `bank_name_match_threshold` | integer | इस स्कोर पर या इससे ऊपर धारक का नाम मिलान माना जाता है। `50` से `100`, डिफ़ॉल्ट `85`। |
| `bank_partial_match_floor` | integer | इस स्कोर से नीचे धारक का नाम बेमेल माना जाता है। `0` से `99`, डिफ़ॉल्ट `70`। फ़्लोर और थ्रेशोल्ड के बीच का दायरा आंशिक मिलान है, इसलिए फ़्लोर थ्रेशोल्ड से सख़्ती से नीचे होना चाहिए, नहीं तो सेव अस्वीकार होता है। यहाँ स्पष्ट `null` का अर्थ "डिफ़ॉल्ट का उपयोग करें" है, इसलिए बिना फ़्लोर के `50` का थ्रेशोल्ड अस्वीकार होता है: उसे डिफ़ॉल्ट फ़्लोर `70` के मुकाबले `50` के रूप में जाँचा जाता है। |
| `bank_require_address_match` | boolean | धारक का पता भी मेल खाना चाहिए। जो नाम थ्रेशोल्ड तक पहुँचा हो, पर जिसका पता उससे नीचे स्कोर करे, वह आंशिक मिलान में चला जाता है। जो संस्थान कोई पता नहीं लौटाता, उसके लिए यह आवश्यकता माफ़ है; लेकिन जिस सत्र के पास तुलना के लिए अपना कोई पता नहीं है, उसके लिए माफ़ी नहीं है, और वह आंशिक मिलान पर पहुँचता है। डिफ़ॉल्ट रूप से बंद। |
| `bank_use_provider_score` | boolean | संस्थान का अपना धारक-नाम स्कोर भी पढ़ा जाता है, और वह तब निर्णय लेता है जब वह Didit के स्कोर से ऊँचा हो, या जब Didit के पास स्कोर करने के लिए धारक का नाम ही न हो। इस तरह तय हुआ परिणाम मिलान विधि के रूप में `provider_only` दर्ज करता है, और जो कनेक्शन ऐसा स्कोर नहीं लौटाता, वह `provider_score_unavailable` चेतावनी दर्ज करता है। डिफ़ॉल्ट रूप से चालू। |
| `bank_show_match_result_to_user` | boolean | स्वामित्व परिणाम सत्यापन प्रवाह के भीतर उपयोगकर्ता को दिखाता है। बंद होने पर यह सत्र पर दर्ज होता है, पर उन्हें कभी दिखाया नहीं जाता। |

### खाता जाँच

ये कुंजियाँ केवल खाता जाँच पर लागू होती हैं। बैंक साइन-इन अपने निकट मिलान और अपना `bank_max_attempts` रखता है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_account_check_accept_close_match` | boolean | चालू (डिफ़ॉल्ट) होने पर, जिस नाम को बैंक `bank_partial_match_floor` और `bank_name_match_threshold` के बीच स्कोर करता है, वह निकट मिलान होता है: `bank_suggest_holder_name` चालू होने पर उपयोगकर्ता बैंक के पास मौजूद नाम की पुष्टि करता है, और `bank_partial_match_action` निर्णय लेता है। बंद होने पर वह निकट मिलान बेमेल होता है (`OWNER_NAME_MISMATCH`, जिसका निर्णय `bank_no_match_action` करता है) और प्रयास खर्च हो जाता है। |
| `bank_account_check_max_attempts` | integer | उपयोगकर्ता को कितनी खाता जाँचें मिलती हैं, `1` से `5`, सेट न होने पर `3`: यानी वह उस जाँच के लिए कितनी बार खाता विवरण टाइप कर सकता है जिसका उत्तर बैंक देता है। यह `bank_max_attempts` से अलग गिनती है। जो जाँच टाइप किए जाने पर ही अस्वीकार हो (जैसे गलत IBAN) या जिसका उत्तर बैंक न दे सके, वह कोई प्रयास खर्च नहीं करती। |

### वित्तीय डेटा

`bank_expected_currencies` अकेले डिफ़ॉल्ट `ownership` सहमति के साथ काम करती है। बाकी तीन कुंजियाँ वास्तविक वित्तीय डेटा पढ़ती हैं, इसलिए हर एक को `bank_scopes` में मेल खाता सहमति स्कोप चाहिए, और उसके बिना सेव अस्वीकार होता है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_expected_currencies` | string\[] | ISO 4217 मुद्राएँ जिनमें खाते के होने की अपेक्षा है। खाली का अर्थ कोई भी है; बेमेल होने की सूचना `bank_currency_mismatch_action` के ज़रिए दी जाती है। |
| `bank_min_balance` | number | न्यूनतम उपलब्ध बैलेंस, खाते की अपनी मुद्रा में। इससे कम होने पर `bank_low_balance_action` चलता है। इसके लिए `balances` स्कोप चाहिए। `0` एक वास्तविक सीमा है और कुंजी छोड़ देने के बराबर नहीं है: ओवरड्रॉन खाता कार्रवाई को ट्रिगर करता है। वह कार्रवाई डिफ़ॉल्ट रूप से `NO_ACTION` है, जो निर्णय नहीं बदलती, इसलिए ओवरड्रॉन खाते को अस्वीकार करने के लिए `bank_low_balance_action: "DECLINE"` भी चाहिए। |
| `bank_transactions_history_days` | integer | बैंक लेन-देन इतिहास कितने दिन पीछे तक पढ़ा जाता है, `30` से `365` दिन। डिफ़ॉल्ट `90` है। इसके लिए `transactions` स्कोप आवश्यक है। |
| `bank_refresh_enabled` | boolean | चरण का निर्णय हो जाने के बाद भी खाते का वित्तीय डेटा दोबारा प्राप्त करें, जब तक बैंक सहमति मान्य है। इसके लिए `balances`, `transactions` या `income` स्कोप में से कम से कम एक आवश्यक है। इसके बाद सहमति समाप्त होने पर क्या होगा, यह `bank_consent_expired_action` से तय होता है। |

### संग्रहीत की जाने वाली जानकारी

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_store_full_identifiers` | boolean | खाते के पहचानकर्ताओं को मास्क किए बिना, पूरे रूप में संग्रहीत करें, मास्क किए गए रूप में नहीं। इसके लिए `identifiers` स्कोप आवश्यक है। इसके बावजूद, बिना मास्क वाला रूप केवल उसी कॉलर को लौटाया जाता है जिसके पास बैंक-सत्यापन पढ़ने की अनुमति है। |
| `bank_store_raw_owner_data` | boolean | संस्थान द्वारा लौटाए गए धारक विवरण को स्वामित्व के प्रमाण के साथ रखें। बंद होने पर केवल तुलना का परिणाम रखा जाता है: स्कोर, मिलान की विधि और कारण कोड। |

### निर्णय कार्रवाइयाँ

यहाँ हर कुंजी `DECLINE`, `REVIEW` या `NO_ACTION` लेती है, जब तक उसे प्रतिबंधित चिह्नित न किया गया हो। अगर आप इसे छोड़ते हैं या `null` भेजते हैं, तो नीचे दिया डिफ़ॉल्ट लागू होता है। सकारात्मक स्वामित्व प्रमाण न होने पर कुछ भी डिफ़ॉल्ट रूप से स्वीकृत नहीं होता, और केवल उपयोगकर्ता के विरुद्ध प्रदर्शनीय प्रमाण ही अस्वीकृति का कारण बनता है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_no_match_action` | प्रतिबंधित कार्रवाई | निर्णय तब जब खाता धारक स्पष्ट रूप से सत्यापित व्यक्ति नहीं है, यानी सबसे अच्छा नाम स्कोर `bank_partial_match_floor` से नीचे है। `DECLINE` या `REVIEW` का उपयोग करें। डिफ़ॉल्ट `DECLINE` है। |
| `bank_partial_match_action` | कार्रवाई | निर्णय तब जब धारक का नाम `bank_partial_match_floor` और `bank_name_match_threshold` के बीच आता है। डिफ़ॉल्ट `REVIEW` है, और यह डिफ़ॉल्ट रूप से कभी स्वीकृत नहीं करता। |
| `bank_not_verifiable_action` | कार्रवाई | निर्णय तब जब संस्थान से कनेक्शन हो गया, पर तुलना के लिए कोई धारक पहचान नहीं मिली। डिफ़ॉल्ट `REVIEW` है। |
| `bank_unknown_action` | कार्रवाई | निर्णय तब जब पुनः प्रयास के बाद भी प्रमाण प्राप्त नहीं हो सका, यानी यह अस्थायी विफलता है। डिफ़ॉल्ट `REVIEW` है। |
| `bank_reference_identity_missing_action` | कार्रवाई | निर्णय तब जब किसी पिछले चरण ने धारक से तुलना के लिए कोई पहचान नहीं दी, इसलिए स्वामित्व केवल `unknown` हो सकता है। डिफ़ॉल्ट `REVIEW` है। |
| `bank_joint_account_action` | कार्रवाई | निर्णय तब जब खाते के एक से अधिक धारक हों। डिफ़ॉल्ट `NO_ACTION` है। |
| `bank_business_account_action` | कार्रवाई | निर्णय तब जब संस्थान धारक को व्यक्ति के बजाय व्यवसाय के रूप में दर्ज करे। व्यक्ति वाले वर्कफ़्लो पर डिफ़ॉल्ट `REVIEW` है, और व्यवसाय (KYB) वर्कफ़्लो पर `NO_ACTION` है, जहाँ सत्र से व्यवसाय धारक की अपेक्षा होती है। |
| `bank_unsupported_action` | कार्रवाई | निर्णय तब जब उपयोगकर्ता बिना बैंक के आगे बढ़ता है, क्योंकि उसके देश या बैंक की जाँच के लिए कोई तरीका उपलब्ध नहीं था: देश के लिए कोई बैंक साइन-इन या खाता जाँच मार्ग नहीं है, या चुना गया बैंक इस चरण पर उपयोग नहीं हो सकता। तब परिणाम में `continued_without_bank` true होता है और कारण कोड में `NOT_COVERED` आता है। डिफ़ॉल्ट `REVIEW` है। |
| `bank_skipped_action` | प्रतिबंधित कार्रवाई | निर्णय तब जब उपयोगकर्ता ने सत्यापन का तरीका उपलब्ध होने के बावजूद आपके बैंक के बिना जारी रखें को चुना। तब परिणाम में `continued_without_bank` true होता है और कारण कोड में `SKIPPED` आता है। `DECLINE` या `REVIEW` का उपयोग करें। डिफ़ॉल्ट `REVIEW` है। |
| `bank_attempts_exhausted_action` | प्रतिबंधित कार्रवाई | निर्णय तब जब उपयोगकर्ता अपने हर उस सत्यापन तरीके के प्रयास खत्म कर चुका है जो अभी भी उपलब्ध है, जिसमें स्टेटमेंट अपलोड भी शामिल है (`bank_max_attempts`, और जहाँ देश खाता जाँच देता है वहाँ `bank_account_check_max_attempts`), और बिना सफल कनेक्शन के। यह निर्णय तब भी लागू होता है जब उपयोगकर्ता इसके बाद बिना बैंक के आगे बढ़ता है। `DECLINE` या `REVIEW` का उपयोग करें। डिफ़ॉल्ट `DECLINE` है। |
| `bank_consent_expired_action` | कार्रवाई | निर्णय तब जब चरण का निर्णय हो जाने के बाद बैंक सहमति समाप्त हो जाती है। यह केवल `bank_refresh_enabled` के साथ मायने रखता है। डिफ़ॉल्ट `NO_ACTION` है। |
| `bank_currency_mismatch_action` | कार्रवाई | निर्णय तब जब खाते की मुद्रा `bank_expected_currencies` में नहीं है। डिफ़ॉल्ट `NO_ACTION` है। |
| `bank_country_mismatch_action` | कार्रवाई | निर्णय तब जब संस्थान का देश अपेक्षित देश या दस्तावेज़ के देश से अलग हो। डिफ़ॉल्ट `NO_ACTION` है। |
| `bank_low_balance_action` | कार्रवाई | निर्णय तब जब उपलब्ध बैलेंस `bank_min_balance` से कम हो। इसके लिए `balances` स्कोप आवश्यक है। डिफ़ॉल्ट `NO_ACTION` है। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। |

### अतिरिक्त नियंत्रण

ये कुंजियाँ वैकल्पिक हैं। हर कार्रवाई कुंजी `DECLINE`, `REVIEW` या `NO_ACTION` लेती है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `bank_abandoned_action` | कार्रवाई | निर्णय तब जब चरण बिना मिलान के समाप्त हो, यानी व्यक्ति अपने बैंक से बाहर चला गया और वापस नहीं आया (प्रयास का समय समाप्त हो गया)। |
| `bank_account_age_action` | कार्रवाई | निर्णय तब जब खाता `bank_account_age_days` से नया हो, जो एक सामान्य म्यूल पैटर्न है। |
| `bank_account_age_days` | integer | जिस खाते का इतिहास इतने दिन पहले से बाद में शुरू होता है, वह नया माना जाता है। मान 1 से 365 के बीच है, डिफ़ॉल्ट 30। यह लेन-देन इतिहास से पढ़ा जाता है, इसलिए केवल `transactions` स्कोप के साथ काम करता है। |
| `bank_account_lookup_enabled` | boolean | अब हटाया जा रहा विकल्प (retired): इसके बजाय `bank_method_order` और `bank_countries.<ISO3>.methods` का उपयोग करें। एक रिलीज़ तक यह उस सेव से पढ़ा जाता है जो `bank_method_order` नहीं भेजती: `bank_open_banking_enabled` के साथ, यह क्रम सेट करता है, और बैंक साइन-इन के बाद खाता जाँच चालू होने पर उसे शामिल करता है। बंद या सेट न होने पर इसे छोड़ दिया जाता है। हर सेव इसे वापस इस रूप में लिखता है कि कोई देश खाता जाँच देता है या नहीं। |
| `bank_account_type_action` | कार्रवाई | निर्णय तब जब सत्यापित खाता बचत खाता हो। |
| `bank_address_match_threshold` | integer | इस स्कोर या उससे ऊपर पर धारक का पता मिलान माना जाता है। मान 50 से 100 के बीच है, डिफ़ॉल्ट 70। यह केवल `bank_require_address_match` के साथ पढ़ा जाता है। |
| `bank_address_mismatch_action` | कार्रवाई | निर्णय तब जब धारक का पता अलग हो, जिससे मिलान करीबी मिलान बन जाता है। यह केवल `bank_require_address_match` के साथ लागू होता है। |
| `bank_auto_add_countries` | boolean | इस नोड के मार्ग जिन सभी देशों को सेवा दे सकते हैं, उन्हें भी पेश करें, जिनमें नोड सेव होने के बाद जोड़े गए देश भी शामिल हैं, सिवाय उन देशों के जिन्हें `bank_countries` बंद करता है। कुंजी अनुपस्थित होने पर यह बंद रहता है, ताकि मौजूदा नोड अपने आप विस्तृत न हो। |
| `bank_cash_flow_action` | action | जब पैसा आए और तुरंत वापस चला जाए, या कई छोटे ट्रांसफ़र आएँ (पास-थ्रू कैश फ़्लो), तब का निर्णय। इसके लिए `transactions` स्कोप चाहिए। |
| `bank_dob_match_enabled` | boolean | जहाँ बैंक जन्म तिथि साझा करता है, वहाँ धारक की जन्म तिथि की तुलना सत्यापित जन्म तिथि से की जाती है। बेमेल होने से स्वामित्व का परिणाम कभी नहीं बदलता: यह `bank_dob_mismatch_action` को ट्रिगर करता है। डिफ़ॉल्ट रूप से चालू। |
| `bank_dob_match_threshold` | integer | इस स्कोर या इससे अधिक होने पर जन्म तिथि मेल खाती है; मान 50 से 100 के बीच है, डिफ़ॉल्ट 70। तारीख या तो उसी दिन की होती है या नहीं, इसलिए उसका स्कोर 100 या 0 होता है। |
| `bank_dob_mismatch_action` | action | धारक की जन्म तिथि अलग होने पर निर्णय। केवल `bank_dob_match_enabled` के साथ लागू। |
| `bank_email_match_enabled` | boolean | बैंक में दर्ज ईमेल की तुलना सत्र के सत्यापित ईमेल से करें। बेमेल होने पर `bank_email_mismatch_action` ट्रिगर होता है। डिफ़ॉल्ट रूप से बंद। |
| `bank_email_match_threshold` | integer | इस स्कोर या इससे अधिक होने पर ईमेल मेल खाता है; मान 50 से 100 के बीच है, डिफ़ॉल्ट 70। |
| `bank_email_mismatch_action` | action | धारक का ईमेल अलग होने पर निर्णय। केवल `bank_email_match_enabled` के साथ लागू। |
| `bank_evidence_retention_days` | integer | निर्णय के इतने दिन बाद बैंक साक्ष्य हटाएँ: 30, 90, 365 या 1825 दिन। Null का मतलब है कि साक्ष्य सत्र के साथ रखा जाएगा। हटाया जाता है: धारक का विवरण, वह पहचान जिससे उसकी तुलना की गई थी, खाता पहचानकर्ता, वित्तीय डेटा और अपलोड किया गया स्टेटमेंट; जो कनेक्शन अब भी सक्रिय है, उसे रद्द किया जाता है। निर्णय, स्कोर और कारण कोड बने रहते हैं। सत्र हटाने पर, जो भी पहले हो, सब कुछ हट जाता है। |
| `bank_fallback_used_action` | action | जब खाता माइक्रो-डिपॉज़िट या स्टेटमेंट अपलोड से सत्यापित हुआ हो, तब का निर्णय। |
| `bank_match_any_holder` | boolean | संयुक्त या सह-स्वामित्व वाला खाता तब मेल खाता है जब सूचीबद्ध कोई भी धारक व्यक्ति से मेल खाए। बंद होने पर केवल वही पहला धारक मेल खा सकता है जिसे बैंक सूचीबद्ध करता है। डिफ़ॉल्ट रूप से चालू। |
| `bank_microdeposits_enabled` | boolean | फ़ॉलबैक के रूप में माइक्रो-डिपॉज़िट की पेशकश करें: खाते में दो छोटी राशियाँ भेजी जाती हैं और व्यक्ति उनकी रकम दर्ज करता है। यह केवल ऐसे देश में दिया जाता है जहाँ का रूट इन्हें भेज सकता है, और उसी सत्र में शुल्क वाले बैंक सत्यापन प्रयास के बाद। कोई अतिरिक्त शुल्क नहीं; ग्राहक रूट मूल्य एक बार चुकाता है। सैंडबॉक्स सत्र बिना बिलिंग के इसकी जाँच कर सकते हैं। धारक वह नाम है जिसे सत्र ने सत्यापित किया है और जिसके नाम पर खाता है, ऐसा व्यक्ति घोषित करता है, इसलिए सत्यापित खाते में `holder_declared` चेतावनी दर्ज होती है। डिफ़ॉल्ट रूप से चालू। |
| `bank_mule_score_action` | action | म्यूल स्कोर `bank_mule_score_threshold` या इससे अधिक होने पर निर्णय। |
| `bank_mule_score_threshold` | integer | इस म्यूल स्कोर या इससे अधिक होने पर, जो 0 से 100 के बीच है, `bank_mule_score_action` ट्रिगर होता है; डिफ़ॉल्ट 70। स्कोर नया खाता, पास-थ्रू कैश फ़्लो, घटता हुआ बैलेंस और आने वाले कई छोटे ट्रांसफ़र को मिलाकर बनता है, जो लेन-देन इतिहास से पढ़ा जाता है (`transactions` स्कोप)। |
| `bank_open_banking_enabled` | boolean | हटा दिया गया है: इसके बदले `bank_method_order` और `bank_countries.<ISO3>.methods` का उपयोग करें। जिस सेव में `bank_method_order` नहीं भेजा जाता, उसमें यह एक रिलीज़ तक पढ़ा जाता है: `bank_account_lookup_enabled` के साथ, यदि यह चालू या अनसेट है, तो यह क्रम को बैंक साइन-इन पर सेट करता है। हर सेव इसे इस रूप में वापस लिखता है कि कोई देश बैंक साइन-इन देता है या नहीं। |
| `bank_phone_match_enabled` | boolean | बैंक में दर्ज फ़ोन की तुलना सत्र के सत्यापित फ़ोन से करें। बेमेल होने पर `bank_phone_mismatch_action` ट्रिगर होता है। डिफ़ॉल्ट रूप से बंद। |
| `bank_phone_match_threshold` | integer | इस स्कोर या इससे अधिक होने पर फ़ोन मेल खाता है; मान 50 से 100 के बीच है, डिफ़ॉल्ट 70। |
| `bank_phone_mismatch_action` | action | धारक का फ़ोन अलग होने पर निर्णय। केवल `bank_phone_match_enabled` के साथ लागू। |
| `bank_popular_mode` | string | `auto` (डिफ़ॉल्ट) लोकप्रिय बैंकों को इस क्रम में रखता है कि देश में लोग किन्हें सबसे अधिक कनेक्ट करते हैं; `manual` इसके बजाय हर देश के `popular_institutions` को `bank_countries` से उसी क्रम में दिखाता है। |
| `bank_statement_document_checks_action` | action | जब अपलोड किए गए स्टेटमेंट में संपादन या छेड़छाड़ के संकेत हों, तब का निर्णय। डिफ़ॉल्ट `REVIEW` है। |
| `bank_statement_enabled` | boolean | फ़ॉलबैक के रूप में बैंक स्टेटमेंट अपलोड की पेशकश करें: पिछले 3 महीने का स्टेटमेंट, छेड़छाड़ के लिए जाँचा जाता है, और उसके धारक का नाम बैंक की तरह मिलाया जाता है। उसी सत्र में शुल्क वाले बैंक सत्यापन प्रयास के बाद, बिना अतिरिक्त शुल्क के। `bank_statement_standalone_enabled` के साथ यह किसी भी देश में, पहले बैंक प्रयास के बिना भी दिया जाता है, और तब इसका अलग से शुल्क लगता है। सैंडबॉक्स सत्र बिना बिलिंग के इसकी जाँच कर सकते हैं। डिफ़ॉल्ट रूप से बंद। |
| `bank_suggest_holder_name` | boolean | निकट मिलान होने पर व्यक्ति को वह नाम दिखाएँ जिस नाम पर बैंक खाता दर्ज रखता है, और पूछें कि क्या यह उनका है या वे कोई दूसरा खाता कनेक्ट करना चाहते हैं। उनका जवाब `holder_confirmation` के रूप में दर्ज होता है; पुष्टि करने पर यह चरण `bank_partial_match_action` पर समाप्त होता है। डिफ़ॉल्ट रूप से चालू। |
| `fallback_to_native` | boolean | क्या मार्केटप्लेस कनेक्शन न बन पाने पर Didit के नेटिव रूट पर फ़ॉलबैक हो। डिफ़ॉल्ट रूप से बंद: चुपचाप फ़ॉलबैक से आपका Didit बैलेंस उस सत्र पर खर्च होगा जिसे आप अपने प्रदाता अनुबंध पर चलने की उम्मीद कर रहे थे। फ़ॉलबैक कनेक्शन `credential_source = native` के रूप में दर्ज होता है और नेटिव मूल्य पर बिल होता है। |
| `provider_key` | string | कौन सा रूट चरण चलाता है। खाली (डिफ़ॉल्ट) का मतलब है Didit का नेटिव Bank Verification, जो एक प्रदाता-निरपेक्ष उत्पाद है; Didit इसे उपयोगकर्ता के देश और संस्थान की सेवा करने वाले क्षेत्रीय ओपन-बैंकिंग वेंडर तक रूट करता है, Didit के अनुबंधों और बिलिंग पर। कोई मान एक मार्केटप्लेस प्रदाता का नाम देता है जिसके अपने क्रेडेंशियल इस एप्लिकेशन में कनेक्ट किए गए हैं; तब सत्र आपके प्रदाता खाते पर चलता है, बिल होता है और रद्द होता है, और Didit केवल मार्केटप्लेस प्लेटफ़ॉर्म शुल्क लेता है। जो प्रदाता कनेक्ट नहीं है, उसे सेव पर अस्वीकार किया जाता है। |

उदाहरण `config` ऑब्जेक्ट, उस खाते के लिए जहाँ Bank Verification चालू है और आपने जो रूट चुना है वह आपकी सूची वाले देश को कवर करता है:

```json theme={null}
{
  "bank_method_order": ["open_banking", "account_lookup"],
  "bank_countries": {
    "ESP": { "enabled": true, "institutions": "all" }
  },
  "bank_scopes": { "ownership": true },
  "bank_eligible_account_types": ["checking", "current"],
  "bank_name_match_threshold": 85,
  "bank_partial_match_floor": 70,
  "bank_partial_match_action": "REVIEW",
  "bank_no_match_action": "DECLINE"
}
```

> [!WARNING]
>
> `bank_countries` यही इस चरण को सक्रिय करता है, और इसकी जाँच वैश्विक सूची के बजाय उस रूट के विरुद्ध होती है जिस पर नोड चलता है। जिस देश में वह रूट खाते का स्वामित्व स्थापित नहीं कर सकता, उसे सेव पर अस्वीकार किया जाता है और त्रुटि में उसका नाम लिखा जाता है, इसलिए त्रुटि पढ़ें, यह मानकर न चलें कि देश स्वीकार हो गया और रन समय पर छोड़ दिया जाएगा।

## AML

सुविधा मान: `AML`।

KYC व्यक्तियों की स्क्रीनिंग के लिए ये फ़ील्ड उपयोग करें:

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `is_aml_ongoing_monitoring_enabled` | boolean | सतत AML निगरानी सक्षम करता है। |
| `aml_score_approve_threshold` | integer | स्वीकृति थ्रेशोल्ड। |
| `aml_score_review_threshold` | integer | समीक्षा थ्रेशोल्ड। |
| `aml_match_score_threshold` | integer | संभावित मिलानों के लिए मिलान स्कोर थ्रेशोल्ड। |
| `aml_name_weight` | integer | नाम भार। यदि कोई AML भार दिया गया है, तो नाम, जन्म तिथि और देश के भार का योग `100` होना चाहिए। |
| `aml_dob_weight` | integer | जन्म तिथि भार। |
| `aml_country_weight` | integer | देश भार। |
| `create_cases_on_hit` | boolean | स्क्रीनिंग में हिट मिलने पर अपने-आप केस खोलें, ताकि हिट को सत्र से छानबीन के लिए छोड़ना न पड़े। डिफ़ॉल्ट रूप से बंद रहता है। |
| `case_blueprint` | uuid | वह केस ब्लूप्रिंट जिससे अपने-आप बनाया गया केस तैयार होता है। केवल `create_cases_on_hit` के साथ मायने रखता है; सेट न होने पर खाते का डिफ़ॉल्ट इस्तेमाल होता है। |
| `status_rules` | array | वैकल्पिक कस्टम स्थिति नियम। |

KYB कंपनी स्क्रीनिंग के लिए ये फ़ील्ड उपयोग करें:

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `kyb_score_approve_threshold` | integer | कंपनी AML स्वीकृति थ्रेशोल्ड। |
| `kyb_score_review_threshold` | integer | कंपनी AML समीक्षा थ्रेशोल्ड। |
| `kyb_enable_ongoing_monitoring` | boolean | KYB सतत AML निगरानी सक्षम करता है। |
| `kyb_company_aml_match_score_threshold` | integer | कंपनी AML मिलान स्कोर थ्रेशोल्ड। |
| `kyb_company_aml_name_weight` | integer | कंपनी नाम भार। प्रदान किए जाने पर कंपनी AML भार का योग `100` होना चाहिए। |
| `kyb_company_aml_dob_weight` | integer | निगमन तिथि या जन्म तिथि भार। |
| `kyb_company_aml_country_weight` | integer | देश भार। |

### एक Document AI चरण द्वारा निकाली गई इकाई की स्क्रीनिंग

एक AML चरण आम तौर पर यह तय करने के लिए कि वह किसकी स्क्रीनिंग करे, `OCR` चरण (व्यक्ति के लिए) या `KYB_REGISTRY` चरण (कंपनी के लिए) से पढ़ता है। जो वर्कफ़्लो का एकमात्र निष्कर्षण चरण `DOCUMENT_AI` है - गैर-मानकीकृत दस्तावेज़, जैसे कर प्रमाणपत्र या निगमन विलेख - उसमें इनमें से कोई नहीं होता, इसलिए उसे बताना होगा कि हर स्क्रीनिंग इनपुट कहाँ से आता है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `aml_field_sources` | object | वह इकाई कहाँ से पढ़ी जाए जिसकी स्क्रीनिंग यह चरण करता है। `source` उत्पादक का नाम बताता है और `key` उसके भीतर का मान: `document_ai` के लिए Document AI फ़ील्ड कुंजी, `questionnaire` के लिए प्रश्नावली नोड ID, और `expected_data` के लिए `expected_details.<field>` या `metadata.<key>`। मैप की KEY चार स्क्रीनिंग इनपुट में से एक होती है - `full_name`, `date_of_birth`, `nationality`, `document_number` - जिन्हें किसी कंपनी के लिए क्रमशः कानूनी नाम, निगमन तिथि, देश और पंजीकरण संख्या के रूप में पढ़ा जाता है। जो Document AI फ़ील्ड पहले से इन चारों में से किसी एक के रूप में कुंजीबद्ध है, वह अपने-आप मैप हो जाता है और जानबूझकर सहेजा नहीं जाता, ताकि उसका नाम बदलने से पुरानी मैपिंग स्थायी न हो जाए। स्पष्ट मैपिंग ऑटो-मैप और पहचान दस्तावेज़, दोनों पर भारी पड़ती है, और जो मैपिंग रन के समय कुछ भी हल नहीं करती, वह इनपुट को किसी और विकल्प पर लौटाए बिना खाली छोड़ देती है। व्यवसाय (KYB) वर्कफ़्लो में `KYB_REGISTRY` चरण से मिली कंपनी प्रामाणिक होती है: केवल स्पष्ट मैपिंग उसके किसी इनपुट को बदल सकती है, रजिस्ट्री रिकॉर्ड के ऊपर ऑटो-मैप लागू नहीं होता, और रजिस्ट्री चरण न होने पर मैपिंग ही पूरी पहचान होती है। संरचना: `{"full_name"\|"date_of_birth"\|"nationality"\|"document_number": {"source": "document_ai"\|"questionnaire"\|"expected_data", "key": "<docai field key>\|<questionnaire node id>\|expected_details.<field>\|metadata.<key>"}}`। |
| `aml_entity_type` | string | `person` या `company`। व्यक्ति (KYC) वर्कफ़्लो पर डिफ़ॉल्ट `person` है और व्यवसाय (KYB) वर्कफ़्लो पर `company`। अपलोड किए गए दस्तावेज़ में नामित व्यवसाय की, `KYB_REGISTRY` चरण के बिना, स्क्रीनिंग करने के लिए `company` सेट करें: प्रदाता कंपनी रिकॉर्ड खोजता है और मिलान स्कोर कंपनी के रूप में आँका जाता है। |
| `aml_incomplete_data_action` | action | जब स्क्रीनिंग पूरी पहचान (नाम, जन्म तिथि और देश) से कम डेटा पर चली हो, तब का निर्णय। डिफ़ॉल्ट `REVIEW` है। `NO_ACTION` उस वर्कफ़्लो के लिए कम डेटा पर आगे बढ़ता है जो जानबूझकर केवल नाम रखता है। स्क्रीनिंग दोनों स्थितियों में चलती है, और आंशिक-डेटा लॉग दोनों स्थितियों में दर्ज होता है; यह केवल तय करता है कि स्थिति पर उसका क्या असर होगा। |

उदाहरण - मेक्सिको के *acta constitutiva* में नामित कंपनी की स्क्रीनिंग, जिसमें वर्कफ़्लो में कहीं भी कोई पहचान दस्तावेज़ नहीं है:

```json theme={null}
{
  "feature": "AML",
  "config": {
    "aml_entity_type": "company",
    "aml_field_sources": {
      "full_name": { "source": "document_ai", "key": "razon_social" },
      "document_number": { "source": "document_ai", "key": "rfc" },
      "date_of_birth": { "source": "document_ai", "key": "fecha_constitucion" },
      "nationality": { "source": "document_ai", "key": "pais" }
    },
    "aml_incomplete_data_action": "REVIEW"
  }
}
```

> [!WARNING]
>
> यदि उससे पहले कोई `OCR` और कोई `KYB_REGISTRY` चरण नहीं है, तो `AML` चरण को `full_name` भरने में सक्षम होना चाहिए, क्योंकि नाम के बिना कोई प्रदाता खोज नहीं होती। जो वर्कफ़्लो कुछ भी मैप नहीं करता, या ऐसी Document AI कुंजी मैप करता है जिसे कोई पूर्ववर्ती चरण निकालता नहीं, उसे सहेजने पर अस्वीकार कर दिया जाता है, ताकि वह कुछ भी स्क्रीन न करते हुए सहेजा न जाए। AML का प्रिसीजन सीधे इस पर निर्भर करता है कि आप कितने पहचानकर्ता देते हैं: केवल-नाम स्क्रीनिंग ही फ़ॉल्स पॉज़िटिव की अधिक मात्रा पैदा करती है।

## डिवाइस और IP विश्लेषण

फ़ीचर मान: `IP_ANALYSIS`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `ip_mismatch_action` | कार्रवाई | जब IP भू-स्थान अपेक्षित डेटा से मेल न खाए, तब की जाने वाली कार्रवाई। |
| `ip_location_not_determined_action` | कार्रवाई | वह निर्णय जब अंतिम उपयोगकर्ता की पहचान करने वाला कोई IP पता दर्ज न हुआ हो, इसलिए सत्र का कोई IP स्थान न हो: देश, शहर, ISP, निर्देशांक और समय क्षेत्र उपलब्ध नहीं होते, और `ip_geofencing_by_country`, दस्तावेज़ के देश की तुलना और VPN/डेटा सेंटर जाँच नहीं चल सकतीं। डिफ़ॉल्ट मान `NO_ACTION` है, जो सत्र पर `IP_LOCATION_NOT_DETERMINED` चेतावनी दिखाता रहता है, पर उसका निर्णय नहीं बदलता; यदि बिना स्थान वाला सत्र पास नहीं होना चाहिए, तो `REVIEW` या `DECLINE` सेट करें। |
| `vpn_detection_action` | कार्रवाई | VPN या प्रॉक्सी उपयोग का पता चलने पर की जाने वाली कार्रवाई। |
| `expected_ip_mismatch_action` | कार्रवाई | जब IP अपेक्षित IP से मेल न खाए, तब की जाने वाली कार्रवाई। |
| `duplicated_ip_action` | कार्रवाई | जब IP संदिग्ध रूप से दोबारा उपयोग हुआ हो, तब की जाने वाली कार्रवाई। |
| `duplicated_device_action` | कार्रवाई | जब एक ही स्थायी डिवाइस फ़िंगरप्रिंट अलग-अलग `vendor_data` मानों वाले सत्रों में दोबारा उपयोग हो, तब की जाने वाली कार्रवाई। |
| `recovered_device_action` | कार्रवाई | जब स्थायी डिवाइस ID बदलने के बाद v2 फ़िंगरप्रिंट रिकवरी सत्र को उच्च विश्वास के साथ पहले देखे गए डिवाइस से जोड़ दे, तब की जाने वाली कार्रवाई। |
| `is_ip_geofencing_enabled` | बूलियन | IP जियोफ़ेंसिंग प्रतिबंध सक्षम करता है। जब `false` हो, तो `ip_geofencing_by_country` सुरक्षित रहता है, पर लागू नहीं किया जाता। |
| `ip_geofencing_by_country` | ऑब्जेक्ट | ISO-3 देश कोड द्वारा कुंजीबद्ध प्रति-देश IP स्थान नियम: `{"USA": {"allowed": true, "states": {"California": {"allowed": false}}}}`। राज्य/क्षेत्र की प्रविष्टियाँ देश के फ़्लैग को ओवरराइड करती हैं; जो देश सूची में नहीं हैं, वे अनुमत हैं। |
| `ip_geofencing_action` | कार्रवाई | जब सत्र का IP ऐसे देश या राज्य/क्षेत्र में स्थित हो जो अनुमत नहीं है, तब की जाने वाली कार्रवाई। डिफ़ॉल्ट मान `DECLINE` है। |
| `automation_detected_action` | कार्रवाई | वह निर्णय जब सत्र किसी व्यक्ति के बजाय ऑटोमेशन द्वारा संचालित लगे। |
| `cross_org_fraud_device_action` | कार्रवाई | वह निर्णय जब नेटवर्क के किसी अन्य संगठन ने इस डिवाइस को धोखाधड़ी वाला चिह्नित किया हो। |
| `cross_org_fraud_ip_action` | कार्रवाई | वह निर्णय जब नेटवर्क के किसी अन्य संगठन ने इस IP को धोखाधड़ी वाला चिह्नित किया हो। |
| `device_app_tampered_action` | कार्रवाई | वह निर्णय जब होस्ट एप्लिकेशन बाइनरी से छेड़छाड़ हुई लगे। |
| `device_blocklist_action` | कार्रवाई | वह निर्णय जब डिवाइस संगठन की ब्लॉकलिस्ट में हो। |
| `device_debugger_action` | कार्रवाई | वह निर्णय जब होस्ट एप्लिकेशन से डीबगर जुड़ा हो। |
| `device_emulator_action` | कार्रवाई | वह निर्णय जब डिवाइस असली हार्डवेयर के बजाय एमुलेटर हो। |
| `device_hooking_action` | कार्रवाई | वह निर्णय जब रनटाइम हुकिंग या इंस्ट्रुमेंटेशन का पता चले। |
| `device_integrity_missing_action` | कार्रवाई | वह निर्णय जब कोई प्लेटफ़ॉर्म डिवाइस-इंटीग्रिटी अटेस्टेशन न लौटा हो। |
| `device_rooted_action` | कार्रवाई | वह निर्णय जब डिवाइस रूट किया गया या जेलब्रोक किया गया हो। |
| `multiple_devices_action` | कार्रवाई | वह निर्णय जब सत्र एक से अधिक डिवाइस से संचालित हुआ हो। |
| `device_liveness_attack_history_action` | कार्रवाई | जब उसी डिवाइस (स्थायी डिवाइस ID से मिलान) का उपयोग किसी अन्य उपयोगकर्ता के पिछले सत्र में हुआ हो, जिसके लाइवनेस कैप्चर को हमला माना गया हो (चेतावनी `DEVICE_LINKED_TO_LIVENESS_ATTACK`), तब की जाने वाली कार्रवाई। डिफ़ॉल्ट मान `NO_ACTION` है। |
| `device_model_inconsistency_action` | कार्रवाई | जब उसी डिवाइस (स्थायी डिवाइस ID से मिलान) को किसी पिछले सत्र में अलग डिवाइस मॉडल के रूप में दर्ज किया गया हो (चेतावनी `DEVICE_MODEL_INCONSISTENT`), तब की जाने वाली कार्रवाई। डिफ़ॉल्ट मान `NO_ACTION` है। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्थिति नियम। |

उदाहरण:

```json theme={null}
{
  "feature": "IP_ANALYSIS",
  "config": {
    "vpn_detection_action": "REVIEW",
    "duplicated_device_action": "REVIEW",
    "recovered_device_action": "REVIEW",
    "is_ip_geofencing_enabled": true,
    "ip_geofencing_by_country": {
      "USA": { "allowed": true, "states": { "California": { "allowed": false } } },
      "RUS": { "allowed": false, "states": null }
    },
    "ip_geofencing_action": "DECLINE"
  }
}
```

जब आप ऑटोमैटिक रूप से अस्वीकार करने से पहले उच्च विश्वास वाले रिकवर्ड डिवाइसों पर नज़र रखना चाहते हों, तो `recovered_device_action` को `duplicated_device_action` से अलग उपयोग करें। रोलआउट के दौरान यह उपयोगी है, क्योंकि रिकवर्ड-डिवाइस मिलान फ़्रॉड रिंग का पता लगाने के लिए बनाए गए हैं, फिर भी इन्हें अपने ही ट्रैफ़िक पर कैलिब्रेट करना चाहिए।

## स्थान सत्यापन

सुविधा मान: `GEOLOCATION`.

यह जाँचता है कि सत्यापन के दौरान व्यक्ति कहाँ है। यह डिवाइस की स्थिति या उस कनेक्शन के IP स्थान से पता लगाता है, और इसकी तुलना अनुमत तथा अवरुद्ध क्षेत्रों, IP स्थान और दस्तावेज़ के पते से करता है।
चरण के व्यवहार के लिए [स्थान सत्यापन](https://docs.didit.me/hi/core-technology/location-verification/overview.md) देखें, और निर्णय के फ़ील्ड के लिए [इसकी रिपोर्ट](https://docs.didit.me/hi/core-technology/location-verification/report-location-verification.md) देखें।
यदि आप दस्तावेज़ के पते तक की दूरी चाहते हैं, तो इसे पहचान सत्यापन या पते के प्रमाण के बाद रखें, क्योंकि दूरी तभी मापी जाती है जब फ़ाइल पर कोई पता हो।
जब `geolocation_position_source` सेट न हो, तो IP स्थान तक की दूरी के लिए उसी वर्कफ़्लो में एक डिवाइस और IP विश्लेषण चरण होना आवश्यक है।
हर कुंजी वैकल्पिक है: खाली `config` वाला चरण डिवाइस से 250 m तक की सटीकता वाली स्थिति माँगता है, जो 120 सेकंड से पुरानी न हो, व्यक्ति को 3 प्रयास देता है और कोई क्षेत्र नियम लागू नहीं करता।

हर निष्कर्ष की अपनी कार्रवाई कुंजी होती है। जो कार्रवाई कुंजी आप खाली छोड़ते हैं, वह आपके चुने `geolocation_preset` का डिफ़ॉल्ट लेती है, या कोई प्रीसेट न चुनने पर नीचे दिए गए हर कुंजी के अपने डिफ़ॉल्ट का।
अनिश्चित या अस्वीकृत स्थान का डिफ़ॉल्ट `REVIEW` होता है, `DECLINE` कभी नहीं, क्योंकि अनुमति से इनकार या चौड़ा रेडियस धोखाधड़ी का प्रमाण नहीं है।
आपने जो कार्रवाई स्पष्ट रूप से सेट की है, वह प्रीसेट पर हमेशा भारी पड़ती है।
दोहराई गई चुनौती (`LOCATION_REPLAY_DETECTED`) और विफल डिवाइस अटेस्टेशन (`LOCATION_INTEGRITY_FAILED`) हमेशा अस्वीकृत होते हैं और इनकी कोई कार्रवाई कुंजी नहीं होती।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `geolocation_position_source` | string | स्थिति कहाँ से आती है। `device_and_ip` डिवाइस की स्थिति माँगता है और उसकी तुलना उस कनेक्शन के IP स्थान से करता है जिससे वह सबमिट होती है (यदि वह IP पहले से कैश में नहीं है, तो IP इंटेलिजेंस लुकअप के ज़रिए)। अनसेट (डिफ़ॉल्ट) डिवाइस की स्थिति भी माँगता है और, इस कुंजी के मौजूद होने से पहले की तरह, उसकी तुलना उस IP स्थान से करता है जिसे सत्र के डिवाइस और IP विश्लेषण चरण ने देखा था। इसलिए उस चरण के बिना कोई दूरी नहीं मापी जाती, और कनेक्शन का कभी लुकअप नहीं होता। अपवाद वह नोड है जो VPN, प्रॉक्सी या Tor निष्कर्ष पर कार्रवाई करता है (अपनी कार्रवाई या अपने प्रीसेट से): वह उस निष्कर्ष के लिए कनेक्शन का लुकअप करता है और डिवाइस की तुलना उससे करता है, ठीक वैसे ही जैसे `device_and_ip` करता है। `device_only` कभी IP स्थान से तुलना नहीं करता और कनेक्शन का लुकअप केवल उन्हीं निष्कर्षों के लिए करता है। `ip_only` व्यक्ति से कुछ नहीं पूछता और इसके बजाय कनेक्शन के IP स्थान का आकलन करता है, शहर स्तर पर 50 km रेडियस के साथ, और इसमें सटीकता, ताज़गी या अनुमानित अनुमति से संबंधित कोई नियम नहीं होता। `geolocation_areas` के साथ, तटीय शहर का आकलन उसके देश के भीतर होता है, जब तक उस रेडियस में कोई दूसरा देश न हो। डिवाइस से स्थिति माँगने वाले नोड पर, जिस प्रयास में डिवाइस की स्थिति नहीं है, उसका आकलन वही इनकार या विफलता माना जाता है जो वह है: IP स्थान उसकी जगह कभी नहीं लेता। |
| `geolocation_preset` | string | वे डिफ़ॉल्ट जो इस नोड की हर अनसेट कार्रवाई लेती है। `licensing`: क्षेत्र से बाहर, अवरुद्ध क्षेत्र में, VPN, Tor या एमुलेटर पर अस्वीकृत; प्रॉक्सी और अन्य निष्कर्षों की समीक्षा; और डिवाइस अटेस्टेशन न होने पर No action। `fraud_screening`: वही, सिवाय इसके कि जिसे Licensing अस्वीकृत करता है, वह समीक्षा के लिए जाता है। Null पुराने डिफ़ॉल्ट रखता है। स्पष्ट रूप से सेट की गई कार्रवाई हमेशा जीतती है। |
| `geolocation_accuracy_mode` | string | डिवाइस से क्या माँगा जाता है। `precise` ऑपरेटिंग सिस्टम से सटीक स्थिति माँगता है, और जो व्यक्ति केवल अनुमानित स्थिति की अनुमति देता है, उससे तब तक फिर पूछा जाता है जब तक प्रयास बचे हों, और फिर `geolocation_approximate_action` से आकलन होता है; `approximate_allowed` अनुमानित अनुमति को उस आकलन के बिना स्वीकार करता है। `geolocation_max_accuracy_radius_m` दोनों पर लागू होता है। अनसेट होने पर `precise`। |
| `geolocation_max_accuracy_radius_m` | integer | डिवाइस की स्थिति की वह अधिकतम अनिश्चितता त्रिज्या, मीटर में, जिसे अभी भी मान्य माना जा सकता है। 10 से 50000 मीटर; अनसेट होने पर 250। इससे चौड़ी स्थिति, या जो कोई त्रिज्या नहीं बताती, वही करती है जो `geolocation_low_accuracy_behavior` कहता है, और उसका आकलन `geolocation_low_accuracy_action` से होता है। `ip_only` नोड की कोई डिवाइस त्रिज्या नहीं होती और वह इसे कभी लागू नहीं करता। |
| `geolocation_max_accuracy_radius_unit` | string | वह इकाई जिसमें कंसोल `geolocation_max_accuracy_radius_m` दिखाता है। केवल प्रदर्शन के लिए: संग्रहीत मान हमेशा मीटर में होता है, कोई नियम इस पर निर्भर नहीं करता, और चरण डेटा इसे केवल इसलिए आगे भेजता है ताकि क्लाइंट वही इकाई दिखा सके। |
| `geolocation_low_accuracy_behavior` | string | `geolocation_max_accuracy_radius_m` से चौड़ी, या बिना त्रिज्या वाली स्थिति क्या करती है: `ask_again` (डिफ़ॉल्ट) व्यक्ति से बचे प्रयासों के दौरान फिर कोशिश करने को कहता है; `fail` पहली ऐसी स्थिति पर चरण समाप्त कर देता है। |
| `geolocation_max_age_seconds` | integer | सर्वर द्वारा प्राप्त होने पर डिवाइस की स्थिति कितने सेकंड पुरानी हो सकती है। 5 से 3600 सेकंड; अनसेट होने पर 120। इससे पुरानी स्थिति के लिए बचे प्रयासों के दौरान फिर पूछा जाता है, और फिर उसका आकलन `geolocation_stale_fix_action` से होता है। |
| `geolocation_timeout_seconds` | integer | हर प्रयास पर क्लाइंट डिवाइस को स्थिति खोजने के लिए कितने सेकंड देता है; सर्वर इसे चरण डेटा में आगे भेजता है और स्वयं कुछ लागू नहीं करता। 5 से 120 सेकंड; अनसेट होने पर 20। जो प्रयास समय पर स्थिति नहीं पाता, वह `timeout` के रूप में सबमिट होता है, बचे प्रयासों के दौरान फिर पूछा जाता है, और फिर उसका आकलन `geolocation_unavailable_action` से होता है। |
| `geolocation_max_attempts` | integer | इस नोड पर व्यक्ति को कितने प्रयास मिलते हैं। 1 से 5 प्रयास; अनसेट होने पर 3। जिस प्रयास को व्यक्ति अब भी बदल सकता है (इनकार, चौड़ी, पुरानी या अनुमानित स्थिति, या ऐसा क्षेत्र या एनोनिमाइज़र निष्कर्ष जिस पर नोड कार्रवाई करता है), उस पर बचे प्रयासों के दौरान फिर पूछा जाता है, और आखिरी प्रयास चरण का निर्णय करता है। नकली स्थिति, या ऐसा एमुलेटर जिस पर नोड कार्रवाई करता है, उसी प्रयास पर चरण समाप्त कर देता है जिसने उसे रिपोर्ट किया। |
| `geolocation_allow_qr_handoff` | boolean | चरण खुला रहते हुए QR कोड के साथ फ़ोन पर जारी रखने की पेशकश करता है (चरण डेटा में `allow_qr_handoff`, हर सबमिट उत्तर पर `can_handoff`)। नेटिव SDK पहले से फ़ोन पर चलते हैं और कोड कभी नहीं दिखाते। डिफ़ॉल्ट रूप से चालू। |
| `geolocation_allow_skip` | boolean | व्यक्ति को किसी भी समय, परिचय स्क्रीन से या पुनः प्रयास स्क्रीन से, बिना स्थान के आगे बढ़ने देता है (`skipped: true`)। स्किप चरण समाप्त करता है और उसका आकलन `geolocation_unavailable_action` से होता है, सिवाय उस स्किप के जो `continue_without_location` `geolocation_refusal_path` पर इनकार का जवाब हो, जिसे वही इनकार दर्ज किया जाता है। डिफ़ॉल्ट रूप से बंद। |
| `geolocation_deep_link_enabled` | boolean | चरण डेटा में `deep_link_enabled` के रूप में क्लाइंट को भेजा जाता है: इसके बजाय ग्राहक को उसका अपना ऐप खोलने का विकल्प दें। सर्वर इस पर कोई नियम लागू नहीं करता। डिफ़ॉल्ट रूप से बंद रहता है। |
| `geolocation_refusal_path` | string | लोकेशन एक्सेस अस्वीकार होने पर आगे बढ़ने का तरीका। `retry_then_handoff` (डिफ़ॉल्ट) जब तक प्रयास शेष हैं तब तक फिर से पूछता है और फ़ोन पर हैंडऑफ़ का विकल्प देता है; `continue_without_location` व्यक्ति को अस्वीकृति दर्ज करके आगे बढ़ने देता है; `end_session` पहली अस्वीकृति पर चरण और सत्र दोनों समाप्त कर देता है, और इसके लिए `geolocation_permission_denied_action` का Review या Decline होना आवश्यक है, साथ ही ऐसा वर्कफ़्लो चाहिए जिसका Declined, In Review या Final निर्णय वाला समापन हो। सत्र का निर्णय उन चरणों से लिया जाता है जो चले थे, और यह कभी Approved नहीं होता: ऐसे वर्कफ़्लो पर जो उस निर्णय पर समाप्त नहीं हो सकता, यह दूसरा गैर-स्वीकृति समापन लेता है (In Review के लिए Declined, Declined के लिए In Review)। |
| `is_geolocation_geofencing_enabled` | boolean | क्षेत्र नियम चालू करता है: `geolocation_areas`, या पुराना `geolocation_geofencing_by_country`, केवल तभी लागू होते हैं जब यह true हो, और तभी चरण डेटा में `available_areas` सूचीबद्ध होता है। डिफ़ॉल्ट रूप से बंद रहता है। इसके चालू होने पर, `geolocation_areas` सूची में कम से कम एक अनुमत क्षेत्र होना आवश्यक है। |
| `geolocation_areas` | array | अनुमत और अवरुद्ध क्षेत्र, जो तब लागू होते हैं जब `is_geolocation_geofencing_enabled` true हो। केवल अनुमत क्षेत्र के भीतर की स्थिति ही पास होती है, और अवरुद्ध क्षेत्र हमेशा अनुमत क्षेत्र पर भारी पड़ता है। स्थिति को उसके पूरे सटीकता वृत्त से आँका जाता है: यदि कोई वृत्त ऐसी सीमा को काटता है जो परिणाम तय करती है, तो परिणाम अनिर्धारित रहता है, कभी बाहर नहीं। कोई देश या क्षेत्र वहीं समाप्त होता है जहाँ दूसरी भूमि शुरू होती है, कभी तट रेखा पर नहीं। और यदि रूपरेखा कोई स्थिति किसी भी भूमि पर नहीं रखती (ऐसा समुद्र तट या पियर जिसे सरलीकृत तट रेखा ने काट दिया हो), तो वह स्थिति उसकी त्रिज्या में 12 नॉटिकल मील जोड़कर बनी दूरी के भीतर आने वाले हर देश या क्षेत्र के लिए अनिर्धारित रहती है। `id` वही है जिसका नाम शाखा नियम और `geolocation.inside_areas` / `geolocation.blocked_areas` लेते हैं; `kind` आकार चुनता है: पूरा `country` (ISO 3166-1 alpha-3, जिसकी प्रकाशित रूपरेखा हो: जो भूभाग रूपरेखाएँ किसी दूसरे देश के क्षेत्र के रूप में दिखाती हैं, वह `region` होता है, जैसे रियूनियन को फ़्रांस के `FR-RE` के रूप में, या बोनेयर, सिंट यूस्टेशियस और साबा को `NL-BQ1` से `NL-BQ3` के रूप में), `region` (किसी एक देश के ISO 3166-2 कोड जिनकी प्रकाशित सीमाएँ हों), `circle` (1 से 500 km) या `polygon` (3 से 200 बिंदु, ऐसी रिंग जिसकी भुजाएँ एक-दूसरे को न काटें और न छुएँ)। अधिकतम 50 क्षेत्र, id अद्वितीय, और जियोफ़ेंसिंग चालू होने पर कम से कम एक अनुमत क्षेत्र। इसे `geolocation_geofencing_by_country` के साथ संयोजित नहीं किया जा सकता। |
| `geolocation_geofencing_by_country` | object | डिवाइस की अपनी स्थिति के लिए देश और क्षेत्र के अनुमति/निषेध नियम, जो केवल तभी लागू होते हैं जब `is_geolocation_geofencing_enabled` true हो। आकार वही है जो IP विश्लेषण के `ip_geofencing_by_country` का है, सिवाय इसके कि `states` की कुंजियाँ राज्यों के नाम नहीं, बल्कि ISO 3166-2 कोड (`US-NJ`) होती हैं, क्योंकि स्थिति किसी प्रदाता के शहर लेबल के बजाय किसी उपखंड के रूप में निर्धारित की जाती है। जो देश सूचीबद्ध नहीं है, वह अनुमत है। जिस देश की कोई प्रकाशित ISO 3166-2 सीमाएँ नहीं हैं, उसके लिए क्षेत्र नियम सहेजना चुपचाप अनदेखा करने के बजाय अस्वीकार कर दिया जाता है। |
| `geolocation_ip_distance_km` | integer | डिवाइस की स्थिति और IP स्थान के बीच अधिकतम कितनी दूरी (किलोमीटर में) हो सकती है, दोनों अनिश्चितता त्रिज्याएँ घटाने के बाद, इससे पहले कि `geolocation_ip_distance_action` लागू हो। कुंजी छोड़ी जाने पर 200; null होने पर तुलना बंद हो जाती है। केवल वह नोड तुलना करता है जिसका `geolocation_position_source` `device_and_ip` है या सेट नहीं है; वह कुंजी बताती है कि किस IP स्थान से तुलना होगी। |
| `geolocation_ip_distance_unit` | string | वह इकाई जिसमें कंसोल `geolocation_ip_distance_km` दिखाता है। केवल प्रदर्शन के लिए: संग्रहीत मान हमेशा किलोमीटर में होता है और कोई नियम इस पर निर्भर नहीं करता। |
| `geolocation_document_distance_km` | integer | स्थिति (`ip_only` नोड पर IP स्थान) `geolocation_document_distance_basis` जिस पते का नाम लेता है, उससे कितनी दूर (किलोमीटर में) हो सकती है, इससे पहले कि `geolocation_document_distance_action` लागू हो। सेट न होने या null होने पर (डिफ़ॉल्ट) यह बंद रहता है। |
| `geolocation_document_distance_unit` | string | वह इकाई जिसमें कंसोल `geolocation_document_distance_km` दिखाता है। केवल प्रदर्शन के लिए: संग्रहीत मान हमेशा किलोमीटर में होता है और कोई नियम इस पर निर्भर नहीं करता। |
| `geolocation_document_distance_basis` | string | कौन-सा पता `geolocation_document_distance_km` की माप का आधार है: `document` (डिफ़ॉल्ट: पहचान दस्तावेज़ का पता, फिर पते का प्रमाण), केवल `proof_of_address`, या `declared` (सत्र बनाते समय दिया गया `expected_details.address`, जिसे जियोकोड किया गया हो)। |
| `geolocation_travel_tolerance_enabled` | boolean | जब वही व्यक्ति (वही `vendor_data`) पिछले `geolocation_travel_max_days` दिनों में उस पते के `geolocation_travel_usual_area_km` के भीतर देखा गया हो, तो पते से दूरी को माफ़ किया जाता है। यह कभी VPN, स्पूफ़ की गई स्थिति, अवरुद्ध क्षेत्र या अनुमत क्षेत्रों से बाहर होने को माफ़ नहीं करता। केवल वह स्थिति गिनी जाती है जिसे डिवाइस ने मापा हो: मॉक्ड या सिम्युलेटेड फ़िक्स, एमुलेटर या विफल अटेस्टेशन कभी इसमें नहीं गिने जाते। |
| `geolocation_travel_usual_area_km` | integer | पते के चारों ओर की वह त्रिज्या जिसे व्यक्ति का सामान्य क्षेत्र माना जाता है। 10 से 500 km; सेट न होने पर 100। |
| `geolocation_travel_max_days` | integer | सामान्य क्षेत्र में देखे जाने के बाद कितने दिनों तक कोई दूर की स्थिति अब भी यात्रा मानी जाएगी। 1 से 90 दिन; सेट न होने पर 14। |
| `geolocation_consecutive_mismatch_count` | integer | जब यह जाँच और उसी व्यक्ति की पिछली जाँचें (वही `vendor_data`) लगातार इतनी बार अनुमत क्षेत्रों से बाहर, किसी अवरुद्ध क्षेत्र में, या पते से बहुत दूर पाई गई हों, तब LOCATION\_CONSECUTIVE\_MISMATCHES उठाया जाता है। वह जाँच जिसने कुछ भी तुलना नहीं की, न तो लगातार बनी इस श्रृंखला को बढ़ाती है और न तोड़ती है, और न ही वह स्थिति जिसे डिवाइस ने नहीं मापा (मॉक्ड या सिम्युलेटेड फ़िक्स, एमुलेटर, विफल अटेस्टेशन)। 2 से 10; null (डिफ़ॉल्ट) होने पर यह बंद रहता है। |
| `geolocation_approximate_action` | action | निर्णय जब उपयोगकर्ता ने अनुमानित स्थान की अनुमति दी हो, जबकि `geolocation_accuracy_mode` सटीक स्थान माँगता है। डिफ़ॉल्ट `REVIEW` है। |
| `geolocation_blocked_area_action` | action | निर्णय जब स्थिति, और उसका पूरा सटीकता वृत्त, `geolocation_areas` के किसी अवरुद्ध क्षेत्र के भीतर आता है। डिफ़ॉल्ट Decline है। |
| `geolocation_consecutive_mismatch_action` | कार्रवाई | जब `geolocation_consecutive_mismatch_count` लगातार इतने बेमेल प्रयास पूरे हो जाएँ, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से समीक्षा होता है। |
| `geolocation_document_distance_action` | कार्रवाई | जब डिवाइस का स्थान `geolocation_document_distance_km` से अधिक दूरी पर हो, दस्तावेज़ के पते से, तब दिया जाने वाला निर्णय। पता मोटे तौर पर जियोकोड किया जाता है, इसलिए यह एक कमज़ोर संकेत है। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_emulator_action` | कार्रवाई | जब स्थान साझा करने वाले ऐप ने एमुलेटर पर चलने की रिपोर्ट दी हो, तब दिया जाने वाला निर्णय। ब्राउज़र यह रिपोर्ट नहीं कर सकते। जब तक यह "कोई कार्रवाई नहीं" न हो, यह उस प्रयास पर चरण समाप्त कर देता है: दोबारा जाँच करने से डिवाइस नहीं बदल सकता। जब तक सेट न किया गया हो या कोई प्रीसेट अन्यथा न कहे, तब तक कोई कार्रवाई नहीं होती। |
| `geolocation_geofence_undetermined_action` | कार्रवाई | जब स्थान को जियोफ़ेंस के अंदर या बाहर नहीं रखा जा सकता, क्योंकि उसका सटीकता वृत्त सीमा तक पहुँचता है, तब दिया जाने वाला निर्णय। अनिश्चितता को कभी बाहर होने के रूप में रिपोर्ट नहीं किया जाता। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_geofencing_action` | कार्रवाई | जब डिवाइस का स्थान, और उसका पूरा अनिश्चितता वृत्त, `geolocation_geofencing_by_country` के बाहर हो, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से `DECLINE` होता है। |
| `geolocation_integrity_missing_action` | कार्रवाई | जब किसी नेटिव क्लाइंट ने बिना डिवाइस अटेस्टेशन टोकन के स्थान भेजा हो, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से "कोई कार्रवाई नहीं" होता है। वेब क्लाइंट को टोकन गायब के रूप में नहीं, बल्कि असमर्थित के रूप में दर्ज किया जाता है, क्योंकि कोई ब्राउज़र अटेस्टेशन नहीं कर सकता। |
| `geolocation_ip_distance_action` | कार्रवाई | जब डिवाइस के स्थान और सत्र के IP स्थान के बीच की दूरी `geolocation_ip_distance_km` से अधिक हो, दोनों अनिश्चितता त्रिज्याएँ घटाने के बाद, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_low_accuracy_action` | कार्रवाई | जब किसी भी प्रयास ने आवश्यक सटीकता हासिल न की हो, तब दिया जाने वाला निर्णय: सर्वोत्तम स्थान की अनिश्चितता त्रिज्या `geolocation_max_accuracy_radius_m` से चौड़ी हो, या उसने कोई त्रिज्या रिपोर्ट ही न की हो। जिस स्थान में त्रिज्या न हो, उसे सीमा पर खरा कभी नहीं माना जाता। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_mock_location_action` | कार्रवाई | जब ऑपरेटिंग सिस्टम ने स्थान को मापा हुआ नहीं, बल्कि सिम्युलेटेड बताया हो (Android mock provider, iOS में सॉफ़्टवेयर द्वारा सिम्युलेटेड), तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_permission_denied_action` | कार्रवाई | जब उपयोगकर्ता ने हर अनुमत प्रयास पर स्थान के प्रॉम्प्ट को अस्वीकार या खारिज किया हो, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से समीक्षा होता है: इनकार एक चुनाव है, धोखाधड़ी का संकेत नहीं। |
| `geolocation_proxy_action` | कार्रवाई | जब जिस कनेक्शन ने स्थान साझा किया, वह किसी खुले, गुमनाम या प्राइवेट-रिले प्रॉक्सी से होकर जाए, तब दिया जाने वाला निर्णय। जब तक सेट न किया गया हो या कोई प्रीसेट अन्यथा न कहे, तब तक कोई कार्रवाई नहीं होती। |
| `geolocation_stale_fix_action` | कार्रवाई | जब स्थान सर्वर द्वारा प्राप्त होने से `geolocation_max_age_seconds` से अधिक पहले मापा गया हो, तब दिया जाने वाला निर्णय। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_tor_action` | कार्रवाई | जब जिस कनेक्शन ने स्थान साझा किया, वह Tor एग्ज़िट नोड हो, तब दिया जाने वाला निर्णय। जब तक सेट न किया गया हो या कोई प्रीसेट अन्यथा न कहे, तब तक कोई कार्रवाई नहीं होती। |
| `geolocation_unavailable_action` | कार्रवाई | जब कोई स्थान प्राप्त न हो सके, तब दिया जाने वाला निर्णय: स्थान सेवाएँ बंद या प्रतिबंधित हों, पोज़िशनिंग सिस्टम ने कुछ न लौटाया हो, प्रयास का समय समाप्त हो गया हो, उपयोगकर्ता ने चरण छोड़ दिया हो, या क्लाइंट इसे सपोर्ट करने के लिए बहुत पुराना हो। डिफ़ॉल्ट रूप से `REVIEW` होता है। |
| `geolocation_vpn_action` | कार्रवाई | जब जिस कनेक्शन ने स्थान साझा किया, वह कोई वाणिज्यिक VPN हो, तब दिया जाने वाला निर्णय। जब तक यह "कोई कार्रवाई नहीं" न हो, व्यक्ति से कहा जाता है कि वह इसे बंद करे और जब तक प्रयास शेष हैं, फिर से जाँच करे। जब तक सेट न किया गया हो या कोई प्रीसेट अन्यथा न कहे, तब तक कोई कार्रवाई नहीं होती। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। आप [स्थान सत्यापन रिपोर्ट](https://docs.didit.me/hi/core-technology/location-verification/report-location-verification.md#स्थिति-नियमों-और-शाखाओं-के-लिए-फ़ील्ड) में सूचीबद्ध `geolocation.*` फ़ील्ड को लक्षित कर सकते हैं। |

### क्षेत्र आकृतियाँ

प्रत्येक `geolocation_areas` आइटम में एक `id` होता है (`A-Z a-z 0-9 _ -` के 1 से 64 अक्षर, सूची में अद्वितीय), एक वैकल्पिक `label` (अधिकतम 80 अक्षर), `type` जो `allowed` या `blocked` हो, और एक `kind` जो आकार चुनता है।

| `kind` | अतिरिक्त फ़ील्ड | अर्थ |
| - | - | - |
| `country` | `country` (ISO 3166-1 alpha-3) | एक पूरा देश जिसकी प्रकाशित रूपरेखा हो। |
| `region` | `country`, `regions` (उस देश के ISO 3166-2 कोड) | एक ही देश के एक या अधिक उप-क्षेत्र जिनकी प्रकाशित सीमाएँ हों। |
| `circle` | `center` (`latitude`, `longitude`), `radius_km` (1 से 500) | केंद्र से त्रिज्या के भीतर आने वाला हर बिंदु। |
| `polygon` | `points` (`latitude`, `longitude` के 3 से 200 आइटम) | एक बंद वलय जिसकी भुजाएँ कभी एक-दूसरे को न काटें और न छुएँ। |

एक सूची में अधिकतम 50 क्षेत्र हो सकते हैं, और जब तक `is_geolocation_geofencing_enabled` `true` है, उसमें कम से कम एक `allowed` क्षेत्र होना आवश्यक है।
`geolocation_areas` और `geolocation_geofencing_by_country` एक साथ नहीं भेजे जा सकते, और `geolocation_refusal_path: "end_session"` के लिए `geolocation_permission_denied_action` का `REVIEW` या `DECLINE` होना आवश्यक है।
API ऐसे क्षेत्र को सहेजने के बजाय अस्वीकार कर देता है जो कभी मेल न खा सके, जैसे बिना प्रकाशित सीमाओं वाले देश का कोई उप-क्षेत्र।

उदाहरण:

```json theme={null}
{
  "feature": "GEOLOCATION",
  "config": {
    "geolocation_position_source": "device_and_ip",
    "geolocation_preset": "licensing",
    "geolocation_max_accuracy_radius_m": 250,
    "geolocation_max_attempts": 3,
    "is_geolocation_geofencing_enabled": true,
    "geolocation_areas": [
      { "id": "spain", "label": "Spain", "type": "allowed", "kind": "country", "country": "ESP" },
      { "id": "ceuta-melilla", "type": "blocked", "kind": "region", "country": "ESP", "regions": ["ES-CE", "ES-ML"] }
    ],
    "geolocation_ip_distance_km": 200,
    "geolocation_ip_distance_action": "REVIEW",
    "geolocation_vpn_action": "DECLINE"
  }
}
```

## पते का प्रमाण

सुविधा मान: `PROOF_OF_ADDRESS`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `poa_documents_allowed` | ऑब्जेक्ट | ISO3 देश कोड को POA दस्तावेज़ प्रकार कॉन्फ़िगरेशन से मैप करने वाला। कम से कम एक मान्य दस्तावेज़ प्रकार सक्षम होना चाहिए। |
| `poa_languages_allowed` | ऑब्जेक्ट | ISO 639-1 भाषा कोड को `0` या `1` से मैप करने वाला। कम से कम एक भाषा सक्षम होनी चाहिए। |
| `poa_name_or_address_mismatch_action` | कार्रवाई | जब नाम या पता अपेक्षित डेटा से मेल न खाए, तब की जाने वाली कार्रवाई। |
| `poa_document_issues_action` | कार्रवाई | जब दस्तावेज़ में गुणवत्ता या निष्कर्षण से जुड़ी समस्याएँ हों, तब की जाने वाली कार्रवाई। |
| `poa_max_attempts_exceeded_action` | सीमित कार्रवाई | जब उपयोगकर्ता पुनः प्रयास की सीमा पार कर दे, तब की जाने वाली कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `poa_document_authenticity_action` | सीमित कार्रवाई | जब प्रामाणिकता जाँच विफल हो, तब की जाने वाली कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `poa_document_unproven_text_replacement_action` | कार्रवाई | जब किसी टेक्स्ट फ़ील्ड को खाली करके दूसरे फ़ॉन्ट में फिर से टाइप किया गया हो और फ़ाइल में यह प्रमाण न हो कि उसकी सामग्री बदली गई है या नहीं (`POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT`), तब की जाने वाली कार्रवाई। |
| `poa_unsupported_document_type_action` | कार्रवाई | जब दस्तावेज़ प्रकार समर्थित न हो, तब की जाने वाली कार्रवाई। |
| `poa_unsupported_language_action` | कार्रवाई | जब दस्तावेज़ की भाषा समर्थित न हो, तब की जाने वाली कार्रवाई। |
| `poa_issuer_not_identified_action` | कार्रवाई | जब दस्तावेज़ जारी करने वाली संस्था की पहचान न हो, तब की जाने वाली कार्रवाई। |
| `poa_issue_date_not_detected_action` | कार्रवाई | जब जारी होने की तिथि गायब हो, तब की जाने वाली कार्रवाई। |
| `poa_unparsable_or_invalid_address_action` | कार्रवाई | जब पता अमान्य हो या उसे पार्स न किया जा सके, तब की जाने वाली कार्रवाई। |
| `address_validation_enabled` | बूलियन | इस चरण में पढ़े गए पते को (जो पते के प्रमाण पर छपा होता है; केवल वही अपलोड सत्यापित होता है जो दस्तावेज़ जाँच में पास हुआ हो) डाक संदर्भ डेटा से सत्यापित करता है: यह पुष्टि करता है कि पता मौजूद है और उसे सामान्यीकृत करता है, और इसे कभी किसी व्यक्ति से नहीं जोड़ता। परिणाम निर्णय में इस चरण के `address_validation` ऑब्जेक्ट में आता है। **प्रति सत्यापित पते पर \$0.10 शुल्क**; जो सत्यापन चल नहीं सका (`unavailable`), वह निःशुल्क है। डिफ़ॉल्ट रूप से बंद। |
| `address_not_verified_action` | कार्रवाई | जब Address Validation पते की भवन-स्तर तक पुष्टि नहीं कर सका (`ADDRESS_NOT_VERIFIED`: `partially_verified` या `not_verified`), तब की जाने वाली कार्रवाई। यह केवल तब लागू होता है जब `address_validation_enabled` चालू हो। डिफ़ॉल्ट `NO_ACTION` है, जो केवल चेतावनी दर्ज करता है। |
| `poa_name_match_score_threshold` | पूर्णांक | नाम मिलान थ्रेशोल्ड। |
| `poa_max_retry_attempts` | पूर्णांक | पुनः प्रयास सीमा, `2` से `5` तक। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

## प्रश्नावली

सुविधा मान: `QUESTIONNAIRE`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `questionnaire_uuid` | UUID | आवश्यक। `POST /v3/questionnaires/` द्वारा लौटाया गया `questionnaire_id` उपयोग करें। |
| `review_questionnaire_manually` | बूलियन | प्रश्नावली के उत्तर मैन्युअल समीक्षा के लिए भेजता है। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। आप `questionnaire.answers.<question_id>` फ़ील्ड को लक्षित कर सकते हैं। |

## KYB रजिस्ट्री

सुविधा मान: `KYB_REGISTRY`.

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `kyb_accepted_countries` | ऑब्जेक्ट | बिज़नेस रजिस्ट्री लुकअप के लिए पुरानी ISO3 देश अनुमति सूची। इसकी जगह `kyb_registry_countries_config` ने ले ली है; यह अब भी पढ़ा जा सकता है और मौजूदा वर्कफ़्लो के लिए इसी से निकाला जाता है, पर नए वर्कफ़्लो कॉन्फ़िगर करने का तरीका अब यह नहीं है। |
| `kyb_manual_company_action` | कार्रवाई | जब कंपनी को मैन्युअल हैंडलिंग की ज़रूरत हो, तब की जाने वाली कार्रवाई। |
| `kyb_registry_fields_config` | ऑब्जेक्ट | होस्टेड फ़्लो में रजिस्ट्री फ़ॉर्म के लिए प्रति फ़ील्ड दृश्यता और आवश्यकता। नीचे देखें। |
| `kyb_registry_countries_config` | ऑब्जेक्ट | प्रति देश रजिस्ट्री रूटिंग, इस रूप में: `{"<ISO2>": {"enabled": bool, "tier": "basic" \| "shareholders" \| "ubo"}}`। सक्षम हर देश वह डेटा स्तर चुनता है जिसका शुल्क कंपनी चुने जाने पर लगता है (`basic` Lite स्तर है), और केवल वही स्तर सक्षम किए जा सकते हैं जिन्हें [मूल्य निर्धारण endpoint](https://docs.didit.me/hi/getting-started/kyb-registry-pricing.md) उस देश के लिए उपलब्ध बताता है। कम से कम एक देश सक्षम होना चाहिए: जो रजिस्ट्री जाँच कहीं भी नहीं खोजती, वह अस्वीकार की जाती है। मैन्युअल रूप से दर्ज की गई कंपनियों का शुल्क अलग से लगता है और उनके लिए यह कॉन्फ़िगरेशन लागू नहीं होता। |
| `kyb_registry_monitoring_enabled` | बूलियन | Shareholders या UBO परिणाम के बाद कंपनी के रजिस्ट्री रिकॉर्ड को लगातार निगरानी में रखता है: स्टेटस, अधिकारियों, स्वामित्व या पते में बदलाव होने पर सत्र वापस समीक्षा में चला जाता है और एक webhook फ़ायर होता है। यह केवल वहीं उपलब्ध है जहाँ रजिस्ट्री प्रदाता निगरानी की सुविधा देता है। प्रति कंपनी प्रति वर्ष USD 2.00, किसी भी समय रद्द किया जा सकता है। डिफ़ॉल्ट रूप से बंद। |
| `kyb_vat_invalid_action` | कार्रवाई | जब कंपनी का VAT नंबर EU VIES सत्यापन में विफल हो, तब की जाने वाली कार्रवाई। डिफ़ॉल्ट `REVIEW` है। |
| `kyb_vat_unverified_action` | कार्रवाई | जब VIES उपलब्ध न होने के कारण VAT नंबर सत्यापित न किया जा सका हो, तब की जाने वाली कार्रवाई। डिफ़ॉल्ट `NO_ACTION` है। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

`kyb_registry_fields_config` हर कॉन्फ़िगर करने योग्य फ़ील्ड कुंजी को `{"enabled": bool, "required": bool}` से मैप करता है। `enabled: false` फ़ील्ड छिपाता है, `enabled: true, required: false` उसे वैकल्पिक के रूप में दिखाता है, और `enabled: true, required: true` उसे सबमिट के समय अनिवार्य बना देता है। `company_name`, `country_code` और `region` हमेशा दिखाए जाते हैं और आवश्यक होते हैं, इन्हें कॉन्फ़िगर नहीं किया जा सकता। जब ऑब्जेक्ट छोड़ा गया हो, `null` हो या `{}` हो, तब डिफ़ॉल्ट लागू होता है: केवल `incorporation_date` आवश्यक है और बाकी हर फ़ील्ड वैकल्पिक है।

```json theme={null}
{
  "kyb_registry_fields_config": {
    "registration_number": { "enabled": true, "required": true },
    "incorporation_date": { "enabled": true, "required": true },
    "vat_number": { "enabled": true, "required": false },
    "control_scheme": { "enabled": false, "required": false }
  }
}
```

कॉन्फ़िगर करने योग्य फ़ील्ड कुंजियाँ: `registration_number`, `incorporation_date`, `legal_address`, `vat_number`, `alternative_names`, `tax_number`, `company_type`, `legal_entity_identifier`, `location_of_registration`, `nature_of_business`, `registered_capital_amount`, `registered_capital_currency`, `website`, `email`, `phone`, `control_scheme`। अंतिम उपयोगकर्ता के व्यवहार के लिए [कॉन्फ़िगर करने योग्य रजिस्ट्री फ़ॉर्म फ़ील्ड](https://docs.didit.me/hi/business-verification/company-data.md#कॉन्फ़िगर-करने-योग्य-रजिस्ट्री-फ़ॉर्म-फ़ील्ड) देखें, और `vat_number` तथा `tax_number` की जाँच के तरीके के लिए [VAT और कर पहचान संख्या सत्यापन](https://docs.didit.me/hi/business-verification/company-data.md#vat-और-टैक्स-id-सत्यापन) देखें।

## KYB दस्तावेज़

सुविधा मान: `KYB_DOCUMENTS`।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `kyb_required_document_groups` | ऑब्जेक्ट या ऐरे | आवश्यक। आवश्यक KYB दस्तावेज़ समूह। |
| `kyb_document_subtype_config` | ऑब्जेक्ट | प्रति दस्तावेज़ उप-प्रकार सक्रियण और आयु कॉन्फ़िगरेशन। |
| `kyb_document_tampering_action` | सीमित कार्रवाई | छेड़छाड़ का पता चलने पर कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `kyb_document_unproven_text_replacement_action` | कार्रवाई | जब कंपनी के दस्तावेज़ के किसी टेक्स्ट फ़ील्ड को खाली करके किसी दूसरे फ़ॉन्ट में फिर से टाइप किया गया हो और फ़ाइल में यह प्रमाण न हो कि उसकी सामग्री बदली गई है या नहीं (`KYB_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT`), तब की कार्रवाई। |
| `kyb_document_critical_mismatch_action` | सीमित कार्रवाई | गंभीर दस्तावेज़ असंगतियों के लिए कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `kyb_document_non_critical_mismatch_action` | कार्रवाई | गैर-गंभीर दस्तावेज़ असंगतियों के लिए कार्रवाई। |
| `kyb_document_age_action` | कार्रवाई | जब दस्तावेज़ की आयु के नियम विफल हों, तब की कार्रवाई। |
| `kyb_document_max_retry_attempts` | पूर्णांक | KYB दस्तावेज़ों के लिए पुनः प्रयास की सीमा। |
| `kyb_document_max_attempts_exceeded_action` | सीमित कार्रवाई | जब अधिकतम प्रयास पार हो जाएँ, तब की कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

## KYB प्रमुख व्यक्ति

सुविधा मान: `KYB_KEY_PEOPLE`।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `kyb_ubo_ownership_threshold` | पूर्णांक | UBO स्वामित्व थ्रेशोल्ड, `0` से `100` तक। |
| `kyb_shareholder_ownership_threshold` | पूर्णांक | शेयरधारक स्वामित्व थ्रेशोल्ड, `0` से `100` तक। यह `kyb_ubo_ownership_threshold` से अधिक नहीं हो सकता। |
| `kyb_key_people_ownership_required` | बूलियन | सबमिट किए गए हर प्रमुख व्यक्ति के लिए स्वामित्व प्रतिशत आवश्यक करता है। सबमिशन पर लागू होता है और होस्टेड UI में प्रदर्शित किया जाता है, जो इस फ़ील्ड को आवश्यक के रूप में चिह्नित करता है। डिफ़ॉल्ट `false`। |
| `kyb_require_ubo_kyc` | बूलियन | UBO के लिए व्यक्ति सत्यापन वर्कफ़्लो पूरा करना आवश्यक करता है। |
| `kyb_ubo_verification_workflow` | UUID | `kyb_require_ubo_kyc` के `true` होने पर आवश्यक। यह उसी एप्लिकेशन के एक गैर-KYB वर्कफ़्लो का संदर्भ होना चाहिए। |
| `kyb_require_officer_kyc` | बूलियन | अधिकारियों के लिए व्यक्ति सत्यापन पूरा करना आवश्यक करता है। |
| `kyb_shareholder_verification_workflow` | UUID | शेयरधारकों के लिए व्यक्ति सत्यापन वर्कफ़्लो। |
| `kyb_officer_verification_workflow` | UUID | अधिकारियों के लिए व्यक्ति सत्यापन वर्कफ़्लो। |
| `kyb_require_corporate_ubo_kyb` | बूलियन | कॉर्पोरेट UBO के लिए KYB पूरा करना आवश्यक करता है। |
| `kyb_corporate_ubo_verification_workflow` | UUID | `kyb_require_corporate_ubo_kyb` के `true` होने पर आवश्यक। यह उसी एप्लिकेशन के एक KYB वर्कफ़्लो का संदर्भ होना चाहिए। |
| `kyb_reject_if_ubo_rejected` | बूलियन | आवश्यक UBO सत्यापन अस्वीकृत होने पर व्यवसाय को अस्वीकार करता है। |
| `kyb_wait_for_all_ubos` | बूलियन | KYB सत्र पर निर्णय लेने से पहले सभी आवश्यक UBO सत्यापनों की प्रतीक्षा करता है। |
| `kyb_role_config` | ऑब्जेक्ट या ऐरे | प्रति भूमिका कॉन्फ़िगरेशन। हर आवश्यक KYC भूमिका में `verification_workflow` शामिल होना चाहिए। |
| `kyb_reuse_verified_individuals` | बूलियन | संभव होने पर पहले से सत्यापित व्यक्तियों का पुनः उपयोग करता है। |
| `kyb_notify_parties_by_email` | बूलियन | आमंत्रित प्रमुख व्यक्तियों को ईमेल सूचनाएँ भेजता है। |
| `kyb_key_people_company_fields` | ऑब्जेक्ट | CORPORATE प्रमुख व्यक्ति के लिए कौन-से कंपनी विवरण एकत्र किए जाते हैं। यह `kyb_key_people_person_fields` जैसी ही विवरणकों की सूची जैसी संरचना और वही नियम इस्तेमाल करता है। संरचना: `[{"key": "<field key>", "label": "<label>", "type": "text"\|"number"\|"date"\|"phone"\|"email", "required": true\|false, "custom": true\|false}]`। |
| `kyb_key_people_document_mismatch_action` | कार्रवाई | जब किसी प्रमुख व्यक्ति का दस्तावेज़ उसके लिए घोषित विवरणों से मेल न खाए, तब का निर्णय। |
| `kyb_key_people_person_fields` | ऑब्जेक्ट | व्यक्तिगत प्रमुख व्यक्ति के लिए एकत्र किए जाने वाले निजी विवरण फ़ील्ड-विवरणकों की एक क्रमबद्ध सूची (मानचित्र नहीं) के रूप में होते हैं। `key` आवश्यक है और खाली नहीं हो सकता; `type` text, number, date, phone या email में से एक होना चाहिए; `custom` उस फ़ील्ड को चिह्नित करता है जिसे ग्राहक ने जोड़ा है, न कि कोई अंतर्निहित फ़ील्ड। संरचना: `[{"key": "<field key>", "label": "<label>", "type": "text"\|"number"\|"date"\|"phone"\|"email", "required": true\|false, "custom": true\|false}]`। |
| `kyb_key_people_prefill_from_registry` | बूलियन | कंपनी रजिस्ट्री के परिणाम से प्रमुख व्यक्तियों की सूची पहले से भरता है, ताकि ग्राहक हर अधिकारी और शेयरधारक को खुद टाइप करने के बजाय उसकी पुष्टि करे और सुधार करे। |
| `status_rules` | ऐरे | वैकल्पिक कस्टम स्टेटस नियम। |

## Document AI

सुविधा मान: `DOCUMENT_AI`।

उपयोगकर्ता से एक या अधिक दस्तावेज़ का अनुरोध करता है और एक विज़न मॉडल की मदद से आपके द्वारा परिभाषित किए गए फ़ील्ड निकालता है। हर कॉन्फ़िगर किया गया फ़ील्ड जिस पर शाखा बनाई जा सकती है, ऐसा मान `document_ai.<key>` बन जाता है, और चरण का परिणाम `document_ai.status` होता है।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `document_ai_documents` | array | आवश्यक। अनुरोध किए जाने वाले दस्तावेज़ (अधिकतम `3`)। हर प्रविष्टि एक दस्तावेज़ ऑब्जेक्ट है (नीचे देखें)। |
| `document_ai_unreadable_document_action` | action | जब दस्तावेज़ पढ़ा न जा सके या उससे कोई डेटा न निकाला जा सके, तब की कार्रवाई। |
| `document_ai_missing_required_fields_action` | action | जब कोई आवश्यक फ़ील्ड निकाला न जा सके, तब की कार्रवाई। |
| `document_ai_document_tampering_action` | restricted action | जब दस्तावेज़ में छेड़छाड़ के संकेत दिखें, तब की कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `document_ai_name_mismatch_action` | action | जब निकाला गया पूरा नाम सत्यापित पहचान से मेल न खाए, तब की कार्रवाई। इसके लिए `is_full_name` से चिह्नित एक फ़ील्ड आवश्यक है। |
| `document_ai_unsupported_file_action` | action | जब अपलोड की गई फ़ाइल का प्रकार समर्थित न हो, तब की कार्रवाई। |
| `document_ai_max_attempts_exceeded_action` | restricted action | जब उपयोगकर्ता पुनः प्रयास की सीमा से अधिक प्रयास कर ले, तब की कार्रवाई। `DECLINE` या `REVIEW` का उपयोग करें। |
| `document_ai_name_match_score_threshold` | integer | न्यूनतम स्कोर (`0`–`100`) ताकि निकाला गया पूरा नाम सत्यापित पहचान से मेल खाए। इससे कम होने पर `document_ai_name_mismatch_action` लागू होता है। |
| `document_ai_max_retry_attempts` | integer | पुनः प्रयास की सीमा, `2` से `5`। |
| `status_rules` | array | वैकल्पिक कस्टम स्थिति नियम। आप `document_ai.<key>` फ़ील्ड को लक्षित कर सकते हैं। |

`document_ai_documents` की हर प्रविष्टि एक दस्तावेज़ है:

| दस्तावेज़ फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `document_key` | string | आवश्यक। दस्तावेज़ के लिए स्थिर पहचानकर्ता, जो चरण के भीतर अद्वितीय हो। |
| `title` | string | आवश्यक। उपयोगकर्ता को दिखाया जाने वाला शीर्षक। |
| `description` | string | आवश्यक। उपयोगकर्ता को दिखाए जाने वाले निर्देश कि क्या अपलोड करना है। |
| `title_i18n` | object | वैकल्पिक। लोकेल कोड से अनूदित शीर्षक (जैसे `{ "es": "Comprobante de fondos" }`)। |
| `description_i18n` | object | वैकल्पिक। लोकेल कोड से अनूदित विवरण। |
| `fields` | array | आवश्यक। निकाले जाने वाले फ़ील्ड (कम से कम एक)। किसी दस्तावेज़ के भीतर फ़ील्ड कुंजियाँ अद्वितीय होनी चाहिए। |

किसी दस्तावेज़ के `fields` की हर प्रविष्टि एक फ़ील्ड है:

| फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `key` | string | आवश्यक। निकाले गए मान के लिए स्थिर JSON कुंजी, जो दस्तावेज़ के भीतर अद्वितीय हो। इसके आधार पर `document_ai.<key>` के रूप में शाखा बनाएँ। |
| `name` | string | आवश्यक। उपयोगकर्ता के लिए पठनीय फ़ील्ड लेबल। |
| `name_i18n` | object | वैकल्पिक। लोकेल कोड से अनूदित फ़ील्ड नाम। |
| `instruction` | string | वैकल्पिक। मॉडल को बताने वाला निर्देश कि इस फ़ील्ड के लिए ठीक-ठीक क्या निकालना है। |
| `type` | string | फ़ील्ड प्रकार: `text`, `number`, या `date`। डिफ़ॉल्ट `text` है। |
| `required` | boolean | फ़ील्ड का मौजूद होना आवश्यक है या नहीं। डिफ़ॉल्ट `false` है। `true` होने पर और मान गायब होने पर `document_ai_missing_required_fields_action` लागू होता है। |
| `is_full_name` | boolean | वैकल्पिक, डिफ़ॉल्ट `false`। वह फ़ील्ड चिह्नित करता है जिसका मान दस्तावेज़ धारक का पूरा नाम है, जिसकी तुलना सत्यापित पहचान (पहचान सत्यापन का नाम, या सत्र के अपेक्षित विवरण) से होती है। **प्रति दस्तावेज़ अधिकतम एक** फ़ील्ड को `true` सेट किया जा सकता है, और यह **अनिवार्य नहीं** है। यदि कोई फ़ील्ड चिह्नित न हो, तो उस दस्तावेज़ के लिए नाम की तुलना नहीं होती। केवल `text` फ़ील्ड ही पूरा नाम हो सकते हैं। |

उदाहरण:

```json theme={null}
{
  "feature": "DOCUMENT_AI",
  "config": {
    "document_ai_documents": [
      {
        "document_key": "proof_of_funds",
        "title": "Proof of Funds",
        "description": "Upload a recent bank statement.",
        "title_i18n": { "es": "Comprobante de fondos" },
        "fields": [
          {
            "key": "account_holder",
            "name": "Account holder",
            "instruction": "The full name of the account holder as printed on the statement.",
            "type": "text",
            "required": true,
            "is_full_name": true
          },
          {
            "key": "closing_balance",
            "name": "Closing balance",
            "instruction": "The closing balance amount.",
            "type": "number",
            "required": false
          }
        ]
      }
    ],
    "document_ai_missing_required_fields_action": "REVIEW",
    "document_ai_name_mismatch_action": "REVIEW",
    "document_ai_name_match_score_threshold": 80
  }
}
```

## ई-हस्ताक्षर

सुविधा मान: `SIGNATURE`।

सत्यापित व्यक्ति, या किसी कंपनी के प्रमुख व्यक्ति, दस्तावेज़ों पर हस्ताक्षर करें, सरल स्तर (डिफ़ॉल्ट) या उन्नत (AES) पर। इसे उन चरणों के बाद रखें जो हस्ताक्षरकर्ता को सत्यापित करते हैं: पहचान सत्यापन, और वन-टाइम कोड के लिए ईमेल या फ़ोन सत्यापन। देखें [ई-हस्ताक्षर](https://docs.didit.me/hi/core-technology/electronic-signature/overview.md)।

| कॉन्फ़िग फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `signature_documents` | array | इस वर्कफ़्लो में कंसोल से अपलोड किए गए दस्तावेज़, उसी क्रम में जिसमें हस्ताक्षरकर्ता उन्हें देखता है, `[{"uuid", "title", "file_name", "pages", "size_bytes"}]` के रूप में। केवल `uuid` मान और उनका क्रम पढ़े जाते हैं; बाकी जानकारी संग्रहीत फ़ाइलों से आती है। अधिकतम 20 दस्तावेज़ और कुल 50 MB। डिफ़ॉल्ट `[]`। |
| `signature_documents_source` | string | दस्तावेज़ कहाँ से आते हैं: `workflow` (डिफ़ॉल्ट), `session` ([सत्र बनाएँ](https://docs.didit.me/hi/sessions-api/create-session.md#ई-हस्ताक्षर-दस्तावेज़) पर `sign.documents`) या `both` (पहले वर्कफ़्लो के दस्तावेज़)। |
| `signature_require_read_to_end` | boolean | हस्ताक्षरकर्ता को सहमति देने से पहले हर ऐसे दस्तावेज़ के अंत तक पहुँचना होगा जिसमें कोई फ़ील्ड न हो। डिफ़ॉल्ट `true`। |
| `signature_consent_per_document` | boolean | हस्ताक्षरकर्ता बिना फ़ील्ड वाले हर दस्तावेज़ पर अलग से सहमति देता है। फ़ील्ड वाले दस्तावेज़ों के लिए, निर्देशित फ़ील्ड और अंतिम सहमति इसकी जगह लेते हैं। डिफ़ॉल्ट `true`। |
| `signature_signer` | string | कौन हस्ताक्षर करता है: `verified_person` (डिफ़ॉल्ट, KYC), या KYB के लिए `legal_representative` (भूमिका `representative` या `authorized_signatory` वाले प्रमुख व्यक्ति) या `key_people` (हर व्यक्तिगत प्रमुख व्यक्ति जिसका KYC सत्र हो)। |
| `signature_level` | string | `simple` (डिफ़ॉल्ट): कोई ID सत्यापन, ईमेल, फ़ोन या कोड नहीं; हस्ताक्षरकर्ता अपना नाम टाइप करता है और सत्र लिंक पर हस्ताक्षर करता है। `aes`: स्वीकृत पहचान सत्यापन, सत्यापित ईमेल या फ़ोन, और एक वन-टाइम कोड की ज़रूरत होती है। `legal_representative` और `key_people` हस्ताक्षरकर्ताओं के लिए `simple` को `signature_simple_requires_verified_person` के साथ अस्वीकार किया जाता है। जब तक वर्कफ़्लो पर `signature_availability.aes` `false` है, नया `aes` चरण सहेजने पर `aes_not_available` के साथ `400` मिलता है। `qes` जल्द आ रहा है: इसे सहेजने पर `qes_not_available` के साथ `400` मिलता है। |
| `signature_format` | string | `pades` (डिफ़ॉल्ट)। AES के लिए `xades` और `cades` को `signature_format_not_supported` के साथ अस्वीकार किया जाता है। |
| `signature_otp_channel` | string | वन-टाइम कोड कहाँ भेजा जाता है: `email` (डिफ़ॉल्ट) या `sms`। यह केवल उस संपर्क पर भेजा जाता है जो सत्र में पहले सत्यापित हुआ हो। |
| `signature_email_signed_copy` | boolean | हस्ताक्षरकर्ता को हस्ताक्षरित दस्तावेज़ों की एक प्रति ईमेल करें। इसके लिए सत्यापित ईमेल चाहिए। डिफ़ॉल्ट `true`। |
| `signature_evidence_page` | boolean | हर हस्ताक्षरित PDF के अंत में साक्ष्य पृष्ठ जोड़ें। डिफ़ॉल्ट `true`। |
| `signature_link_validity_days` | integer | हस्ताक्षर लिंक सत्र बनाए जाने से `1` से `30` दिनों तक वैध रहता है। डिफ़ॉल्ट `7`। |
| `signature_declined_action` | action | हस्ताक्षरकर्ता के मना करने पर निर्णय। कोई शुल्क नहीं लिया जाता। डिफ़ॉल्ट `REVIEW`। |
| `signature_otp_failed_action` | action | 3 या उससे अधिक गलत कोड, या 5 से अधिक कोड माँगे जाने के बाद निर्णय। डिफ़ॉल्ट `DECLINE`। |
| `signature_name_mismatch_action` | action | जब किसी प्रमुख व्यक्ति का घोषित नाम उसके सत्यापित नाम से मेल न खाए, तब निर्णय। डिफ़ॉल्ट `DECLINE`। |
| `signature_identity_not_verified_action` | action | जब हस्ताक्षरकर्ता के पास स्वीकृत पहचान प्रमाण न हो, तब निर्णय। डिफ़ॉल्ट `DECLINE`। |
| `signature_document_changed_action` | action | जब कोई दस्तावेज़ उस SHA-256 से मेल न खाए जो उसे दिखाए जाने के समय दर्ज हुआ था, तब निर्णय। डिफ़ॉल्ट `DECLINE`। |
| `status_rules` | array | वैकल्पिक कस्टम स्टेटस नियम। आप `signature.status`, `signature.level` और `signature.format` को लक्षित कर सकते हैं। |

वर्कफ़्लो दस्तावेज़ों के फ़ील्ड कंसोल के टेम्पलेट एडिटर में रखे जाते हैं। सत्र दस्तावेज़ों के लिए, उनके फ़ील्ड `sign.documents[].fields` में भेजें, और `api.<key>` फ़ील्ड के मान `sign.field_values` में भेजें। देखें [सत्र बनाएँ](https://docs.didit.me/hi/sessions-api/create-session.md#ई-हस्ताक्षर-दस्तावेज़)।

उदाहरण, हर सत्र के साथ भेजे गए दस्तावेज़ों के लिए:

```json theme={null}
{
  "feature": "SIGNATURE",
  "config": {
    "signature_documents_source": "session",
    "signature_signer": "verified_person",
    "signature_level": "aes",
    "signature_otp_channel": "email",
    "signature_link_validity_days": 14,
    "signature_declined_action": "REVIEW"
  }
}
```


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